문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

문제 해설
문제를 해결하기 위해 가장 먼저 배열을 조건에 맞게 정렬해야한다. 2번 조건에 col
번째 컬럼의 값을 기준으로 오름차순 정렬하고, 값이 동일하면 첫 번째 컬럼의 값을 기준으로 내림차순 정렬하라는 언급이 있으므로 data
를 해당 조건에 맞게 정렬한다(코드의 3번째 줄). 이후 row_begin
번째 튜플부터 row_end
번째 튜플까지의 Si를 구하여 별도의 배열 또는 리스트에 저장한다(코드의 4~11번째 줄). 마지막으로 각 Si에 대하여 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 |
댓글