사용 언어 - Python3
문제 - 실습용 로봇
https://school.programmers.co.kr/learn/courses/15009/lessons/121687
정답
구현
방향에 따라 바뀌는 x, y 위치 잘 파악하기
개인적으로 지금까지 PCCP 문제중에 제일 쉬웠음
0. 시작위치 x=0, y=0 / 시작방향 a = 0
오른쪽 90도 회전 : a+90
왼쪽 90도 회전 : a-90
360도 넘거나 0보다 작아지면 -360, +360으로 방향 업데이트
1. 명령어에 따라 바뀌는 x값, y값을 저장해준다.
def solution(command):
answer = [0,0] # 시작위치
a = 0 # 시작 방향 0(360),90,180,270
for c in command:
if c == "R": # 오른쪽 90도 회전
a += 90
if a >= 360:
a -= 360
elif c == "L": # 왼쪽 90도 회전
a -= 90
if a < 0 :
a += 360
elif c == "G": # 한칸 전진
if a == 0 : # y값+1
answer[1] += 1
elif a == 90: # x값+1
answer[0] += 1
elif a == 180 : # y값-1
answer[1] -= 1
elif a == 270: # x값-1
answer[0] -= 1
elif c == "B": # 한칸 후진
if a == 0 : # y값-1
answer[1] -= 1
elif a == 90: # x값-1
answer[0] -= 1
elif a == 180 : # y값+1
answer[1] += 1
elif a == 270: # x값+1
answer[0] += 1
return answer
(방향를 이용하는 방법)
현재방향 d = 0 에서
오른쪽 90도 회전 = (d+1)%4
왼쪽 90도 회전 = 오른쪽 270도 회전 = (d+3)%4
%4 = 0이하 4이상으로 가지 않기 위해!
def solution(command):
path = [[0,1], [1,0], [0,-1], [-1, 0]]
x = y = d = 0
for i in command:
if i == 'R': d = (d+1)%4
elif i == 'L': d = (d+3)%4
elif i == 'G':
x += path[d][0]
y += path[d][1]
elif i == 'B':
x -= path[d][0]
y -= path[d][1]
return [x,y]
레퍼런스
'Algorithm > 구현' 카테고리의 다른 글
[프로그래머스] PCCP 모의고사 1회 2번 체육대회 (0) | 2023.12.13 |
---|---|
[프로그래머스] PCCP 모의고사 1회 1번 외톨이 알파벳 (0) | 2023.12.13 |
[프로그래머스 lv 3] PCCP 기출 3번 아날로그 시계 (1) | 2023.12.08 |
[프로그래머스 lv 1] PCCP 기출 1번 붕대감기 (0) | 2023.12.04 |
[백준] 16472번 고냥이 (투포인터 문제) (0) | 2023.11.03 |
댓글