티스토리 뷰
(r, c)를 방문한 순서를 구하는 문제이다. 분할 정복 알고리즘으로 해결할 수 있다.
브루트 포스를 통해 모든 셀을 방문하여 (r, c)에 대한 순서를 구할 수도 있지만 시간 초과가 발생한다. 따라서 이미 주어지는 r, c의 값을 가지고 최적화를 해야한다.
전체 배열의 시작점(가장 왼쪽 구석 지점)을 start_row, start_col이라 가정했을 때, 전체 배열을 4등분하고 각각의 배열 시작점과 끝점을 나타내면 아래와 같다.
시작: start_row, start_col 끝: start_row + 세로의 길이 / 2 -1, start_col+ 가로의 길이 / 2 - 1 |
시작: start_row, start_col+ 가로의 길이 / 2 끝: start_row + 세로의 길이 / 2 -1, start_col+ 가로의 길이 |
시작: start_row + 세로의 길이 / 2, start_col 끝: start_row + 세로의 길이, start_col+ 가로의 길이 / 2 - 1 |
시작: start_row + 세로의 길이 / 2, start_col + 가로의 길이 / 2 끝: start_row + 세로의 길이, start_col + 가로의 길이 |
(r, c)가 해당 하는 지점을 선택하여 재귀 호출하면 문제를 해결할 수 있다.
Python
728x90
'PS > 백준' 카테고리의 다른 글
[백준] 1600 말이 되고픈 원숭이 (0) | 2021.03.26 |
---|---|
[백준] 1520 내리막길 (0) | 2021.03.26 |
[백준] 17136 색종이 붙이기 (0) | 2021.03.15 |
[백준] 17143 낚시왕 (0) | 2021.03.15 |
[백준] 17135 캐슬 디펜스 (0) | 2021.03.14 |
댓글