m
정사각형의 한 변의 길이
n
명령어의 수
명령어, 인수
로봇이 수행할 명령어
모든 명령어 수행 후 로봇의 최종 위치
구현/시뮬레이션 문제이므로 명령어를 따라 위치를 계산해나가면 된다
초기 방향은 동쪽, 초기 위치는 (0, 0)으로 설정
명령어가 TURN일 때, 뒤의 인수가 0이라면 방향을 시계방향으로 90도,
인수가 1이라면 반시계방향으로 90도 돌려준다.
명령어가 MOVE일 때는 현재 방향을 고려하여 움직여야 한다.
현재 방향이 동쪽이면 인수만큼 +x, 서쪽이면 인수만큼 -x,
북쪽이면 인수만큼 +y, 남쪽이면 인수만큼 -y한다.
n개의 명령어에 대해 수행 ->
1 n 1,000 이므로 시간 내에 통과 가능
분기문을 체계적으로 작성해야 함.
1회차) 성공 ~ easy
import sys
input = sys.stdin.readline
m, n = map(int, input().split())
x, y = 0, 0
direction = 0
for _ in range(n):
command, num = input().split()
if command == "TURN": # TURN
if num == "0": direction = (direction + 1) % 4
else: direction = (direction + 3) % 4
else: # MOVE
if direction == 0: x += int(num) # 동
elif direction == 1: y += int(num) # 북
elif direction == 2: x -= int(num) # 서
else: y -= int(num) # 남
if not (0 <= x <= m and 0 <= y <= m):
print(-1)
break
else: print(x, y)
실버 4 쉬웠다 그리고 그래프나 DP보단 구현이 훨씬 재미있는 듯