코틀린/코딩테스트

코딩테스트 [중복된 숫자 개수]

정혜현 2024. 6. 12. 09:13

문제

정수가 담긴 배열 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}
}

 


회고

배열의 평균값 이후로 메소드가 얼마나 유용한지 깨달았다. 아는 게 힘!