[프로그래머스 / Swift] Lv.0 - 짝수홀수개수

박준혁 - Niro·2023년 10월 15일
1

프로그래머스

목록 보기
1/12
post-thumbnail

🔗 문제 링크


https://school.programmers.co.kr/learn/courses/30/lessons/120824

✅ 풀이


짝수와 홀수의 개수를 구하라니 문제만 봐도 굉장히 쉬워보였다!

짝수는 2로 나눴을 때 나머지가 0인 수, 홀수는 2로 나눴을 때 나머지가 1인 수를 각각 구하면 되는것이다

⌨️ 첫번째 풀이

import Foundation

func solution(_ num_list:[Int]) -> [Int] {
    
    var num1 = 0
    var num2 = 0
    
    for i in num_list {
        if i%2 == 0 {
            num1 += 1
        } else {
            num2 += 1
        }
    }
    
    return [num1, num2]
}

짝수와 홀수의 개수를 카운트 할 num1, num2 변수를 선언해주고 전달받은 수의 배열인 num_list 의 요소를 for 반복문을 통해 짝수와 홀수를 구분하고자 했다

물론 이 코드도 맞지만 다른 사람들의 코드를 보니.. 너무 생각없이 코드를 짰나 싶기도 해서 다른 방법으로 풀어보았다


⌨️ 두번째 풀이

import Foundation

func solution(_ num_list:[Int]) -> [Int] {
    return [num_list.filter{ $0 % 2 == 0 }.count, num_list.filter{ $0 % 2 == 1 }.count]
}

코드의 양으로만 봐도 단번에 줄일 수 있는 것을 볼 수 있다!

단어의 뜻 풀이만 봐도 뭔가 해당 배열의 요소를 어떤 조건에 따라 걸러낸다 라는 느낌을 받을 수 있지만 filter 라는 고차함수를 알지 못하는 사람들에게는 구현할 수 없다고 생각한다


문제를 생각하다보니 갑자기 드는 궁금점이 생겼다...

  1. 고차함수를 써서 코드의 양을 줄일 수 있는게 좋은 방향인가?
  1. 누구나 알 수 있게 구현하는 것이 좋은 코드인가?

아직 정확하게 정의를 내릴 수 없지만 코테에서는 1번 방법이 더욱 효율적이라 생각하는 편이기는 한거 같다..

앞으로 더 고민해봐야할 부분이다...

profile
📱iOS Developer, 🍎 Apple Developer Academy @ POSTECH 1st, 💻 DO SOPT 33th iOS Part

0개의 댓글