728x90
[깃허브]
[프로그래머스]
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
}
}
반응형
'Kotlin > Algorithm Problems' 카테고리의 다른 글
<백준> 숨바꼭질 3(Gold 5) (1) | 2024.01.08 |
---|---|
<백준> 토마토(Gold 5) (1) | 2024.01.05 |
<프로그래머스> 멀쩡한 사각형(Lv.2) (1) | 2024.01.04 |
<프로그래머스> 점 찍기(Lv.2) (1) | 2024.01.03 |
<프로그래머스> 숫자 카드 나누기(Lv.2) (1) | 2024.01.02 |