백준 23031 으어어… 에이쁠 주세요.. - 파이썬 (Python)
문제
밤이 되면 어두워지는 다솔관에는 좀비가 나온다는 괴담이 있다. 그 좀비들의 정체는 바로 시험 기간에 공부하느라 지친 학생들이었다. 지친 학생들은 멀리서 보면 흡사 좀비이므로 학생 좀비라고 부르자. 아리는 낮에 공부하다가 깜빡하고 책을 두고 와서 밤에 다시 다솔관 4층으로 가야 한다. 밤에 다솔관 4층에 도착한 아리는 겁이 많아서 학생 좀비들을 마주친다면 기절해버리고 말 것이다. 아리는 기절 하지 않고 무사히 책을 찾아 돌아가고 싶다.
N × N으로 이루어진 다솔관 4층 곳곳에는 형광등 스위치와 학생 좀비들이 있다. 아리는 가장 왼쪽 위인 (1, 1)에서 출발하고 아리와 학생 좀비들은 모두 아래 방향을 보고 있다. 아리는 주어진 순서 A에 따라 이동을 한다. 문자열 A는 F, L, R로 구성되어 있으며, F는 앞으로 1칸 전진, L은 아리가 현재 바라보고 있는 방향을 기준으로 왼쪽으로 90도 방향 전환, R은 오른쪽으로 90도 방향을 전환한다. 다솔관 4층 주변에는 벽이 있어서 N × N 밖으로는 이동할 수 없다. 벽에 부딪히게 되면 전진하지 못하고 제자리에 머문다.
밤에는 학생들이 별로 없어서, 다솔관 4층은 암전 상태이다. 겁이 많은 아리는 형광등 스위치가 있는 칸에 도착하면 그 곳에 학생 좀비가 있더라도 학생 좀비랑 마주치기 전에 스위치를 켠다. 스위치를 켜게 되면 해당 스위치가 있는 칸과 상, 하, 좌, 우, 대각선 네 방향으로 1칸씩 불을 밝힌다. 스위치는 한 번 켜게 되면 꺼지지 않는다. 아리가 이동을 마칠 때마다 학생 좀비들은 자신이 보고 있는 방향으로 한 칸 전진한다. 만약 학생 좀비들이 벽에 부딪히게 되면 제자리에서 뒤를 돌아 반대 방향을 바라본다.
아리는 불이 꺼져있는 칸에서 학생 좀비와 함께 있으면 괴담에서 나오는 좀비로 착각하여 그 자리에서 바로 기절해 다음 날 아침에 깨어난다. 하지만 불이 켜져 있는 칸이거나 스위치가 있는 칸에서는 평범한 학생인 것을 알아보고 기절하지 않는다.
아리는 어두워진 다솔관에서 사물함을 찾아 이동하는 중이다. 이동 중에 기절하지 않을 수 있는지 구하여라.
정리
별도로 풀이 방법을 생각할 필요 없이 시키는 대로만 따라하면 정답을 받을 수 있는 문제입니다.
따라서 시뮬레이션의 순서만 정리했습니다.
아리가 움직인다.
스위치가 있다면 킨다
좀비가 현재 아리의 위치에 있는지 확인한다.
불이 켜져있지 않은 칸이고 좀비가 있다면 실패이다.
좀비가 움직인다.
다시 한번 3, 4번을 확인한다.
주의점
86%, 92% 에서 오답처리를 여러 번 받게 되었는데, 그 이유에 대해 정리합니다.
86% 오답
[정리] 의 6번을 처리하지 않은 경우 해당됩니다.
아리가 움직이고 난 뒤에 좀비가 움직이기 때문에 아리와 좀비가 만날 수 있는 경우는 두 가지 경우가 있습니다.
아리가 이동했는데 그 칸에 좀비가 있는 경우
아리가 움직이고 그 뒤에 좀비가 이동했는데 아리가 이동했던 칸으로 좀비가 이동한 경우
그렇기 때문에 아리의 이동 직후와 좀비의 이동 직후에 모두 체크를 해야 하는데 한 가지를 빼먹은 경우에 86%에서 오답을 받았습니다.
92% 오답
스위치 처리를 잘못하여 오답을 받은 경우입니다.
스위치는 자신을 중심으로 3X3만큼의 범위를 비춰주는데, 저는 빛이 비춰진 칸을 "O" 에서 "K"로 변경하여 구분하였습니다.
이 때, 한 스위치를 켰는데 3X3 범위 안에 또 다른 스위치가 있는 경우, 그 스위치마저 "K"로 변경되도록 하여 문제가 발생한 것이었습니다.
0개의 댓글