📜 접근 방법
수행할 수 있는 것은 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
💡알게 된점
중복 코드가 많아서 좀 거슬린다.. 더 최적화 시킬 방법을 생각해봐야겠다.
'코딩테스트 > Python' 카테고리의 다른 글
[python] 혼자서 하는 틱택토 (0) | 2023.04.07 |
---|---|
[python 백준 1374] 강의실 (0) | 2023.04.07 |
[python] pccp 모의고사 1 외톨이 알파벳 (0) | 2023.03.18 |
[python 백준 3107] IPv6 (0) | 2023.03.13 |
[python 백준 1715] 카드 정렬하기 (0) | 2023.02.04 |