여행가 A는 N × N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 × 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다
계획서에는 하나의 줄에 띄어쓰기를 기준으로 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다.
각 문자의 의미는 다음과 같다
L: 왼쪽으로 한 칸 이동
R: 오른쪽으로 한 칸 이동
U: 위로 한 칸 이동
D: 아래로 한 칸 이동
이때 여행가 A가 N × N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를 들어 (1, 1)의 위치에서 L 혹은 U를 만나면 무시된다
첫째 줄에 공간의 크기를 나타내는 N이 주어진다 (1<=N<=100)
둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다 (1<=이동 횟수<=100)
첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 X, Y를 공백으로 구분하여 출력한다.
#p111
size = int(input())
order = list(input().split())
direction = {'R': (0, 1), 'L': (0, -1), 'U': (-1, 0), 'D': (1, 0)}
mat = []
for i in range(size):
mat.append([[i+1, j+1] for j in range(size)])
x, y = 1, 1
for k in order:
if mat[x-1][y-1][0] + direction[k][0] == 0 or mat[x-1][y-1][1] + direction[k][1] == 0:
continue
x += direction[k][0]
y += direction[k][1]
print(x, y)
책에서 나온 방식과는 다르게 좌표평면 자체를 구현해서 한 번 풀어보았다.
구현에는 5분이 좀 넘어간 것 같은데 다음에는 더 빠르게 구현해보고 싶다.