문제 링크
문제 해설
문제를 해결하기 위해 가장 먼저 배열을 조건에 맞게 정렬해야한다. 2번 조건에 col
번째 컬럼의 값을 기준으로 오름차순 정렬하고, 값이 동일하면 첫 번째 컬럼의 값을 기준으로 내림차순 정렬하라는 언급이 있으므로 data
를 해당 조건에 맞게 정렬한다(코드의 3번째 줄). 이후 row_begin
번째 튜플부터 row_end
번째 튜플까지의 \(S_i\)를 구하여 별도의 배열 또는 리스트에 저장한다(코드의 4~11번째 줄). 마지막으로 각 \(S_i\)에 대하여 XOR 연산을 수행하여 반환한다.
여기서 col
, row_begin
, row_end
는 모두 1부터 시작하지만 배열과 리스트의 인덱스는 0부터 시작한다는 점만 주의하면 된다.
Code
class Solution {
fun solution(data: Array<IntArray>, col: Int, row_begin: Int, row_end: Int): Int {
data.sortWith { o1, o2 ->
if (o1[col - 1] == o2[col - 1]) o2[0] - o1[0]
else o1[col - 1] - o2[col - 1]
}
val s = ArrayList<Int>()
for (i in row_begin - 1..row_end - 1) {
var temp = 0
for (j in data[i].indices) {
temp += data[i][j] % (i + 1)
}
s.add(temp)
}
var result = s[0]
for (i in 1..s.lastIndex) {
result = result xor s[i]
}
return result
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 프로그래머스 : 주식가격 (0) | 2022.11.29 |
---|---|
[Java] 프로그래머스 : 더 맵게 (0) | 2022.11.24 |
댓글