[구현] 상하좌우
문제
N x N 크기의 정사각형 공간이 있다. 가장 왼쪽 위의 좌표는 (1, 1)이고, 가장 오른쪽 아래 좌표는 (N, N)이다. (1, 1)부터 시작해서 L, R, U, D로 움직일 수 있다.
- L: 왼쪽으로 한 칸
- R: 오른쪽으로 한 칸
- U: 위로 한 칸
- D: 아래로 한 칸
계획서가 주어졌을 때 최종적으로 도착할 지점의 좌표를 출력하라.
조건:
- 첫 줄: 공간의 크기를 나타내는 N (1 N 100)
- 둘째 줄: 계획서 (1 이동횟수 100)
예시
- 입력:
5
R R R U D D
- (1, 1) - (1, 2) - (1, 3) - (1, 4) - (1, 4) - (2, 4) - (3, 4)
- 출력: 3 4
방법
- 입력:
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)
Author And Source
이 문제에 관하여([구현] 상하좌우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dana/구현-상하좌우저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)