Kotlin/Algorithm Problems

<프로그래머스> 테이블 해시 함수(Lv.2)

re트 2024. 1. 5. 11:10
728x90

[깃허브]

https://github.com/heesoo-park/ForCodeKata/tree/main/%ED%85%8C%EC%9D%B4%EB%B8%94%20%ED%95%B4%EC%8B%9C%20%ED%95%A8%EC%88%98

[프로그래머스]

https://school.programmers.co.kr/learn/courses/30/lessons/147354

테스트 케이스

 

생각보다 쉽게 접근하고 풀어냈던 문제였다.

정렬 방법누적값을 구하는 방법만 조금 고민했고 그외에는 간단했다.

 

정렬은 두 가지의 정렬 기준이 있었기 때문에 sortedWith를 사용했다.

그리고 compareBy로 각각의 정렬 기준을 작성했고 내림차순으로 정렬되어야하는 정렬 기준은 -를 붙여줬다.

-를 붙여줌으로 해당 숫자의 클수록 앞으로 가게 되기 때문이다.

 

누적값은 처음에 반복문으로 하다가 이렇게 할 필요가 있나 싶어 생각을 하다보니 fold 함수가 생각났다.

차곡차곡 나머지값을 더하니 간단하게 한 줄로 누적값을 구할 수 있었다.

 

해당 방법으로 작성한 코드는 다음과 같다.

class Solution {
    fun solution(data: Array<IntArray>, col: Int, row_begin: Int, row_end: Int): Int {
        var answer = 0
        val sortedData = data.sortedWith(compareBy({ it[col - 1] }, { -it[0] }))

        (row_begin..row_end).forEach {
            answer = answer xor sortedData[it - 1].fold(0) { sum, num -> sum + num % it }
        }

        return answer
    }
}
반응형