관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 짝수 홀수 개수 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 짝수 홀수 개수 (Kotlin)

참깨빵위에참깨빵_ 2022. 12. 22. 17:51
728x90
반응형
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은
배열을 리턴하도록 solution()을 완성하라

 

 

먼저 주먹구구식으로 풀어봤다. 짝수, 홀수를 담을 ArrayList를 만들고 num_list를 순회하면서 짝수, 홀수들을 각 리스트에 담아서 intArray로 만들어 리턴하면 된다.

 

class Solution {
    fun solution(numList: IntArray): IntArray {
        val oddList = arrayListOf<Int>()    // 홀수
        val evenList = arrayListOf<Int>()   // 짝수
        for (i in numList) {
            if (i % 2 == 0) {
                evenList.add(i)
            } else {
                oddList.add(i)
            }
        }

        return intArrayOf(evenList.size, oddList.size)
    }
}

 

이제 여기서 더 줄여본다. 컬렉션에 사용할 수 있는 함수 중 filter는 중괄호 블럭 안의 조건에 맞는 요소만 포함하는 리스트를 반환하는 함수다. 이걸 써서 홀짝 개수를 구분한 다음 filter 호출 결과로 받은 리스트들의 크기를 intArray에 담아서 리턴시키면 되지 않을까?

 

fun solution(numList: IntArray) =
        intArrayOf(numList.filter { it % 2 == 0 }.size, numList.filter { it % 2 != 0 }.size)

 

통과했다. 만약 중괄호 블럭 뒤의 size가 거슬린다면 다른 함수를 써도 같은 결과를 얻을 수 있다.

 

fun solution(numList: IntArray) =
        intArrayOf(numList.count { it % 2 == 0 }, numList.count { it % 2 != 0 })

 

count는 중괄호 블럭 안의 조건에 맞는 요소의 개수만 반환하는 함수다. 이렇게 하면 처음 코드보다 더 간결해진 코드로 문제를 해결할 수 있다.

반응형
Comments