0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
문제해석
numbers의 길이 ≤ 9numbers의 모든 원소 ≤ 9numbers의 모든 원소는 서로 다릅니다.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에 해당 수를 더한다.
class Solution
{
fun solution(numbers: IntArray): Int = 45 - numbers.sum()
}
와우, 1~9까지의 합을 구한 후, numbers의 합을 빼면 답이 나오네??
class Solution
{
fun solution(numbers: IntArray): Int = (0..9).filterNot(numbers::contains).sum()
}
코틀린에서는 메서드 참조라는 기능을 사용하면 메서드를 간결하게 참조할 수 있다.
(람다 표현식 대신 사용) { it -> numbers.contains(it) } 와 동일한 의미를 가짐
numbers::contains는 numbers.contains 메서드를 참조하는 표현
filterNot
컬렉션에 주어진 조건을 만족하지 않는 요소들을 필터링함
지난주에 팀플 때문에 코드카타를 제대로 풀지 못했는데, 오랜만에 하니까 새롭기도 하고 모르는 부분도 많았다. 약간 오랜만에 해서 까먹은 느낌이었음. 앞으로 팀플을 진행하더라도 코드카타는 매일 풀기~~