[구현] 상하좌우

6060 단어 구현구현

문제

N x N 크기의 정사각형 공간이 있다. 가장 왼쪽 위의 좌표는 (1, 1)이고, 가장 오른쪽 아래 좌표는 (N, N)이다. (1, 1)부터 시작해서 L, R, U, D로 움직일 수 있다.

  • L: 왼쪽으로 한 칸
  • R: 오른쪽으로 한 칸
  • U: 위로 한 칸
  • D: 아래로 한 칸

계획서가 주어졌을 때 최종적으로 도착할 지점의 좌표를 출력하라.

조건:

  • 첫 줄: 공간의 크기를 나타내는 N (1 \leq N \leq 100)
  • 둘째 줄: 계획서 (1 \leq 이동횟수 \leq 100)

예시

  • 입력:
    5 
    R R R U D D
  • (1, 1) - (1, 2) - (1, 3) - (1, 4) - (1, 4) - (2, 4) - (3, 4)
  • 출력: 3 4

방법

요구사항대로 구현하면 연산 횟수는 이동 횟수에 비례한다. 따라서 시간 복잡도는 매우 넉넉한 편이다.

n = int(input())
x, y = 1, 1 
plans = input().split()

dx = {'L': 0, 'R': 0, 'U': -1, 'D': 1}
dy = {'L': -1, 'R': 1, 'U': 0, 'D': 0}

for plan in plans: 
  new_x = x + dx[plan]
  new_y = y + dy[plan]
  if (new_x < 1 or new_x > n or new_y < 1 or new_y > n): 
    continue 
  x, y = new_x, new_y 

print(x, y)

좋은 웹페이지 즐겨찾기