없는 숫자 더하기

Anna·2024년 7월 11일

코딩테스트

목록 보기
25/28
post-thumbnail

📖 문제

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

문제해석

📖 제한 조건

  • 1 ≤ numbers의 길이 ≤ 9
    • 0 ≤ numbers의 모든 원소 ≤ 9
    • numbers의 모든 원소는 서로 다릅니다.

👻 내 풀이

class Solution 
{
    fun solution(numbers: IntArray): Int 
    {
        var answer = 0
        for(i in 1..9)
        {
            if(numbers.contains(i) == false)  answer += i
        }

        return answer
    }
}

for구문을 사용 1~9를 반복

조건문으로 numbers 배열에 i가 있는지 확인

→ 만약 false 없으면 answer에 해당 수를 더한다.

👻 다른 사람 풀이 해석 (1)

class Solution 
{
    fun solution(numbers: IntArray): Int  = 45 - numbers.sum()
}

와우, 1~9까지의 합을 구한 후, numbers의 합을 빼면 답이 나오네??

👻 다른 사람 풀이 해석 (2)

class Solution 
{
    fun solution(numbers: IntArray): Int = (0..9).filterNot(numbers::contains).sum()
}

코틀린에서는 메서드 참조라는 기능을 사용하면 메서드를 간결하게 참조할 수 있다.

(람다 표현식 대신 사용) { it -> numbers.contains(it) } 와 동일한 의미를 가짐

numbers::containsnumbers.contains 메서드를 참조하는 표현

filterNot

컬렉션에 주어진 조건을 만족하지 않는 요소들을 필터링함


📖 느낀점

지난주에 팀플 때문에 코드카타를 제대로 풀지 못했는데, 오랜만에 하니까 새롭기도 하고 모르는 부분도 많았다. 약간 오랜만에 해서 까먹은 느낌이었음. 앞으로 팀플을 진행하더라도 코드카타는 매일 풀기~~

0개의 댓글