문제
여행가 A는 N * N 크기의 정사각형 공간 위에 서 있습니다. 이 공간은 1 * 1 크기의 정사각형으로 나눠져 있습니다. 가장 왼쪽 위 좌표는 (1,1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당합니다. 여행가는 상-하-좌-우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)입니다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 있습니다.
L : 왼쪽으로 한 칸 이동
R : 오른쪽으로 한 칸 이동
U : 위로 한 칸 이동
D : 아래로 한 칸 이동
이때 여행가 A가 N * N 크기의 정사각형 공간을 벗어나는 움직임은 무시됩니다. 예를 들어 (1,1)의 위에서 L 혹은 U를 만나면 무시됩니다.
모범 답안
n = int(input())
plans = list(map(str, input().split()))
x, y = 1, 1
#LRUD
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
type = ['L', 'R', 'U', 'D']
for plan in plans :
for v in range(len(type)):
if plan == type[v]:
nx = x + dx[v]
ny = y + dy[v]
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
x, y = nx, ny
print(x, y)
이동하는 방향과 이동시 변하는 숫자를 리스트로 만들고 for문을 이용하여 입력된 plans와 같은 type을 만나면 dx와 dy를 더한다.
내 답안
n = int(input())
pos = list(map(str, input().split()))
x, y = 1, 1
for v in pos:
if v == "R" and n > x :
y += 1
if v == "L" and n < x :
y -= 1
elif v == "U" and n < y :
x -= 1
elif v == "D" and n > y :
x += 1
else : pass
print(x, y)
'CODE > Python' 카테고리의 다른 글
백준 1991 트리 순회 (0) | 2022.05.07 |
---|---|
프로그래머스 프린터 Python (0) | 2021.12.16 |
프로그래머스 2주차 Python (0) | 2021.08.30 |
프로그래머스 완주하지 못한 선수 Python (0) | 2021.07.29 |
코드업 6098 성실한 개미 Python (0) | 2021.07.28 |
댓글