관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 등차수열의 특정한 항만 더하기 (Kotlin) 본문

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

[Algorithm] 프로그래머스 - 등차수열의 특정한 항만 더하기 (Kotlin)

참깨빵위에참깨빵_ 2023. 12. 6. 20:33
728x90
반응형
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어진다. 첫 항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 리턴하는 함수를 작성하라

 

 

2, 4, 6, 8...처럼 모든 숫자가 동일하게 2씩 차이가 나는 숫자의 열이 있다면 이를 등차수열이라고 부른다. 사전적 정의는 서로 이웃하는 두 항 사이의 차이가 일정한 수열이다.

문제에서 true에 해당하는 숫자만 따로 빼서 더해야 하기 때문에 Map을 사용해서 true인 숫자만 골라내서 더하고 리턴시키는 방법을 생각했다.

 

class Solution {
    fun solution(a: Int, d: Int, included: BooleanArray): Int {
        var num = a
        val map = hashMapOf<Int, Boolean>()
        for (i in included.indices) {
            map[num] = included[i]
            num += d
        }

        return map.filter { it.value }.map { it.key }.sum()
    }
}

 

true인 값들만 filter, map으로 골라낼 것이기 때문에 Map을 정렬하는 로직은 필요없다.

true인 숫자들을 골라냈다면 sum()으로 모두 합해서 리턴시키면 끝이다.

반응형
Comments