문제
좌표평면의 원점 위에 드론이 있다. 이 드론에는 네 가지 명령어를 입력할 수 있다. 입력할 수 있는 명령어는 다음과 같다.
U
: 드론의 좌표를 1증가시킨다.D
: 드론의 좌표를 1 감소시킨다.R
: 드론의 좌표를 1 증가시킨다.L
: 드론의 좌표를 1 감소시킨다.
좌표평면 위에는 장애물도 개 있다. 만약 드론이 이동하려는 칸에 장애물이 있다면 이동하지 못하고 제자리에 있게 된다. 장애물들의 위치와 드론에 입력된 명령어가 주어졌을 때 드론의 최종 위치를 구해보자.
입력
첫 번째 줄에 장애물의 개수 과 입력된 명령어의 개수 가 공백으로 구분되어 주어진다.
두 번째 줄부터 개의 줄에 걸쳐 번째 장애물의 좌표와 좌표를 나타내는 두 정수 와 가 공백으로 구분되어 주어진다. 단, 모든 장애물들의 위치는 다르고 원점 위에는 장애물이 없다.
번째 줄에는 드론에 입력된 명령어들이 문자열로 주어진다. 주어진 문자열의 각 문자는 U
, D
, R
, L
중 하나이다.
출력
모든 명령어가 입력되었을 때, 드론이 있는 위치의 좌표와 좌표를 공백으로 구분하여 출력한다.
내 풀이
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
obstacles = [list(map(int, input().split())) for _ in range(n)]
moves = input().strip()
drone = [0, 0]
for i in range(k):
dx, dy = 0, 0
if moves[i] == 'U':
dy = 1
elif moves[i] == 'D':
dy = -1
elif moves[i] == 'L':
dx = -1
elif moves[i] == 'R':
dx = 1
nx, ny = drone[0]+dx, drone[1]+dy
if [nx, ny] not in obstacles:
drone = [nx, ny]
print(*drone)
코멘트
이동"하려는" 칸에 장애물이 있는지 확인하고 이동해야 한다.