13567번 - 로봇

의혁·2025년 1월 2일
0

[Algorithm] 알고리즘

목록 보기
8/50

💡 문제가 길거나 어렵더라도 끝까지 읽고 완전한 이해를 하는 습관을 들이자!

# TURN 0: 왼쪽 90도 회전 / TURN 1: 오른쪽으로 90도 회전 / MOVE d: 해당 방형으로 d이동
# 처음에는 오른쪽을 보고 있다.

M, N = map(int, input().split(' '))
# 1: 서, 2: 북, 3: 동, 4:남
direction = 3
curr = [0,0]

for _ in range(N):
    
    command = list(input().split(' '))

    if command[0] == 'MOVE':
        if direction == 1:
            curr = [curr[0] - int(command[1]) , curr[1]]
        elif direction == 2:
            curr = [curr[0], curr[1] + int(command[1])]
        elif direction == 3:
            curr = [curr[0] + int(command[1]) , curr[1]]
        else: 
            curr = [curr[0], curr[1] - int(command[1])]
    else:
        if command[1] == '1':
            direction += 1
            
            # 남 -> 서 일경우 에는 서에 맞게 수정
            if direction == 5:
                direction = 1
        else:
            direction -= 1
            
            # 서 -> 남 일경우 에는 남에 맞게 수정
            if direction == 0:
                direction = 4
                
    if curr[0] < 0 or curr[1] < 0 or curr[0] > M or curr[1] > M:
        print(-1)
        exit()

print(curr[0], curr[1])
  • 비교적 난이도는 쉬웠지만, 더 좋은 방법이 있을거 같은데.. 생각이 나지 않는다.
  • 방향을 변경할때, 각 방향을 리스트로 해두고, 리스트를 넘어가면 첫번째 or 마지막으로 옮겨주는 방식을 고안해보았지만, 생각이 나지 않았다. (이건 스터디에서 다른분들의 아이디어를 참고할 예정이다.)
  • 일단 나는 오른쪽 or 왼쪽으로 90도씩 이동할 수 있도록, 방향을 서 -> 북 -> 동 -> 남으로 지정해서 계산하여서 풀었다.
profile
매일매일 차근차근 나아가보는 개발일기

0개의 댓글