jay153의 PS 일지
BOJ 14734 본문
https://www.acmicpc.net/problem/14734
코드
http://boj.kr/d53a0455fbfd4d92b9ef11c779e84844
2017 KAIST 7th ACM-ICPC Mock Competition A
난이도 : P1
Elapse Time : 100min
예제를 보고 왼쪽 $(N-1)$줄을 세로로 맞추어 주고, 오른쪽 $(N-1)$줄을 세로로 맞춘 뒤 가운데 두 줄을 세로로 배열하는 풀이를 생각했다. 왼쪽 $(N-1)$줄은 왼쪽부터, 오른쪽 $(N-1)$줄은 오른쪽부터 한 줄씩 세로로 바꾸도록 코드를 짰는데 WA를 받았다. 케이스 고려를 많이 빼먹은 탓이었다. 한 줄을 모두 세로로 바꿨을 때 'U'가 위치해야 하는 부분에 'L' 또는 'R'이 위치하면 다시 'L' 또는 'R'이 나오기 전까지 'U'와 'D'가 엇갈리게 되는데, 엇갈린 'U'와 'D'의 개수와 관계없이 모두 'L' 또는 'R'로 바꾸어 주어야 한다는 것을 알게 되었다. 이를 위해서는 'L'과 'R' 사이에서 두 줄의 값이 같아야 하고 옆줄을 현재 줄과 같게 만드는 것을 재귀로 구현할 생각을 했다. $make(x_s,x_e,y)$를 $x_s\leq i< x_e$인 모든 $i$에 대해 $v[i][y]$에 'U', 'D'가 올바르게 배치되도록 만드는 함수로 정의하여 재귀로 구현하였다. $v[x_s][y]$와 $v[x_e-1][y]$가 모두 'L' 또는 'R'이 되도록 설정해주어야 하는데 이 과정에서 실수를 하여 여러 번 틀렸다.