# 행렬 예시
for i in range(5):
for j in range(5):
print('(', i, ',', j, ')')
print()
#%%
#동, 북, 서, 남
dx = [0, -1, 0, 1]
dy = [1, 0, -1, 0]
# 현재 위치
x, y = 1, 1
for i in range(4):
# 다음 위치
nx = x + dx[i]
ny = y + dy[i]
print(nx, ny)
#%% md
* 문제를 풀기전에 구현에 대해서 배울 때 사용했던 짧은 코드를 가져왔다.
* 처음 위치는 1,1이고 for 반복문을 통해서 움직일 수 있다.
#%%
num = int(input())
list1 = input().split()
x, y = 1, 1
# print(list1)
for i in list1:
# if 문자열이 R이라면 이동
if i == 'R' and y < num:
y += 1
elif i == 'L' and y > 1:
y -= 1
elif i == 'U' and x > 1:
x -= 1
elif i == 'D' and x < num:
x += 1
print(i, 'x = ', x, ', ', 'y = ', y)
#%% md
* 처음에 문자열 입력을 잘못했다. split() 까먹지 말자.
* x, y의 방향이 헷갈린다. 방향 좌표이기 때문에 좌표축이랑은 다르다. 오른쪽으로 가면 y가 증가하는 것이다.
* 대충 이런식으로 풀었는데 풀이를 한 번 봐보자..
#%% md
## 풀이
#%%
# N 입력 받기
n = int(input())
x, y = 1, 1
plans = input().split()
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인하기
for plan in plans:
# 이동 후 좌표 구하기
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# 공간을 벗어나는 경우 무시
if nx < 1 or ny < 1 or nx > n or nx > n:
continue
# 이동 수행
x, y = nx, ny
print(x, y)
#%% md
* 내 직관적인 생각과는 상반되는 너무나도 깔끔한 코드~~~
* 언제쯤 나도 이런 코드를 짤 수 있을까
* 다음주에 다시 짜봐야지 ㅋㅋㅋ 너무 깔끔하당