문제
https://school.programmers.co.kr/learn/courses/30/lessons/147354
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
입출력

해설
정렬 기준에 맞게 정렬한 뒤, row_begin ~ row_end 값을 XOR한 값을 리턴하는 문제이다.
문제에서 주어진 요구 조건은 'data'배열을 'col'에 값을 기준으로 오름차순으로 정렬하고
정렬한 뒤 data[row_begin:row_end]에 각 컬럼의 값을 현재 행의 값으로 모듈러 누적한 뒤
최종적으로 XOR하는 것이었다.
행 값이 최대 2500이고 열 값은 500 이므로 2500 * 500으로 충분히 O(row * col)으로 돌 수 있다고 생각했다.
문제에서 주어진 그대로로 구현하여 풀이를 진행해주면 된다.
정답코드
더보기
/*
1. primary key,
1. sort col, data[row][0]을 기준으로 정렬
*/
import "sort"
func solution(data [][]int, col int, row_begin int, row_end int) int {
col--
sort.Slice(data, func(i, j int) bool{
var front, back = data[i], data[j]
if front[col] == back[col]{return front[0] > back[0]}
return front[col] < back[col]
})
//fmt.Println(data)
//정렬 후 row부터 누적
var ret = 0
for i := row_begin - 1; i < row_end; i++{
var tmp = 0
for j := range data[i]{
tmp += (data[i][j] % (i + 1))
}
ret ^= tmp
//fmt.Println(tmp)
}
return ret
}
깃허브 :
'코딩테스트 > programmers' 카테고리의 다른 글
| 프로그래머스 / 구현 / 행렬 테두리 회전하기 (0) | 2026.01.17 |
|---|---|
| 프로그래머스 / DFS / 무인도 여행 (0) | 2026.01.16 |
| 프로그래머스 / BFS / 리코쳇 로봇 (0) | 2025.12.29 |
| 프로그래머스 / 정수론 / 124 나라의 숫자 (0) | 2025.12.27 |
| 프로그래머스 / 정수론 / 소수 찾기 (0) | 2025.12.22 |