본문 바로가기
코딩테스트/Python

[python] pccp 모의고사 2 실습용 로봇

by nahkim 2023. 3. 22.

📜 접근 방법

수행할 수 있는 것은 4가지로

R : 오른쪽으로 90도 회전

L : 왼쪽으로 90도 회전

G :  한 칸 전진

B : 한 칸 후진

 

R과 L의 경우 회전만 하면되지만 G와 B의 경우엔 현재 어느 쪽으로 전진인지 후진인지 알아야한다.

 

시계 방향으로 도는 것을 기준으로 check1, check2를 생성

즉 [y + 1, x + 1, y - 1, x - 1]

 

 

회전하는 것은 rotate_num으로 확인

 

❌ 실패 코드

 

✅ 정답 코드

def solution(command):
    answer = [0, 0]
    
    check1 = ['y', 'x', 'y', 'x']
    check2 = [1, 1, -1, -1]
    
    rotate_num = 0
    for c in command:
        if c == "R":
            rotate_num += 1
        elif c == "L":
            if rotate_num == 0:
                rotate_num = 3
            else:
                rotate_num -= 1
        elif c == "G":
            rotate = abs(rotate_num) % 4
            if rotate == 0 or rotate == 2:
                answer[1] += check2[rotate]
            else:
                answer[0] += check2[rotate]
        else:
            rotate = abs(rotate_num) % 4
            if rotate == 0 or rotate == 2:
                answer[1] -= check2[rotate]
            else:
                answer[0] -= check2[rotate]
        
    return answer

💡알게 된점

중복 코드가 많아서 좀 거슬린다.. 더 최적화 시킬 방법을 생각해봐야겠다.