문제
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120583
풀이
1. 접근
1.1 관찰
기능 : array에서 n을 확인한다. 개수를 담는다.
반환 : 개수를 리턴한다.
1.2 준비
count() : 배열, 컬렉션 등의 요소를 확인해서 개수를 세어주는 메소드
Boolean형으로 확인 후 Int형으로 반환해준다.
조건이 필요할 땐 중괄호를 사용하며 {}코드블록 안에는 일반적으로 람다식이 들어간다.(람다식만 가능한 건 아님)
람다식 내 it은 따로 선언하지 않아도 count할 배열, 컬렉션 등의 요소로 타입추론된다.
람다식
(Int,Int) -> Int = {a:Int, b:Int -> a + b }
----------------- -------------- --------
선언자료형 파라미터 처리
파라미터, 선언자료형 둘 중 하나에 타입 명시되어 있으면 다른 쪽은 생략가능
파라미터가 하나일 경우 it으로 대체가능
2. 시행착오
2.1 시도
- 가설 : .count{} 메소드로 개수를 세면 될 것이다.
class Solution {
fun solution(array: IntArray, n: Int): Int {
var answer: Int = 0
answer = array.count{it == n}
return answer
}
}
- 검증 : 성공
최대한 줄여보았다. 마지막 표현식이 반환되는데 왜 return 키워드를 생략할 수 없을까?
class Solution {
fun solution(array: IntArray, n: Int): Int {
return array.count{it == n}
}
}
스코프 내에서는 return 키워드를 생략할 수 없다. 한줄짜리 표현식이므로 스코프를 생략하면 return도 생략가능하다.
class Solution {
fun solution(array: IntArray, n: Int): Int =
array.count{it == n}
}
회고
배열의 평균값 이후로 메소드가 얼마나 유용한지 깨달았다. 아는 게 힘!
'코틀린 > 코딩테스트' 카테고리의 다른 글
코딩테스트 [짝수는 싫어요] (0) | 2024.06.13 |
---|---|
코딩테스트 [머쓱이보다 키 큰 사람] (0) | 2024.06.12 |
코딩테스트 [옷가게 할인 받기] (0) | 2024.06.11 |
코딩테스트 [피자 나눠먹기(1)] (0) | 2024.06.11 |
코딩테스트 [배열의 평균값] (0) | 2024.06.11 |