본문 바로가기
CODE/Python

이코테 상하좌우

by zerozero\base 2022. 4. 24.

문제

여행가 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

댓글