728x90
반응형
문제 바로가기
문제:
컴퓨터공학과에서는 실습용 로봇을 이용해서 로봇 프로그래밍을 학습합니다. 실습용 로봇은 입력된 명령에 따라 x좌표와 y좌표로 표현되는 2차원 좌표 평면 위를 이동합니다. 하나의 명령은 하나의 문자로 주어지며 각 명령어에 따라 로봇이 수행하는 일은 다음과 같이 네 종류입니다. 'R': 로봇이 오른쪽으로 90도 회전합니다. 'L': 로봇이 왼쪽으로 90도 회전합니다. 'G': 로봇이 한 칸 전진합니다. 'B': 로봇이 한 칸 후진합니다. 명령어는 각각의 명령들이 모인 하나의 문자열로 주어지며, 차례대로 수행됩니다. 로봇은 처음에 (0, 0) 위치에 +y 축을 향하여 놓여 있습니다. 다음 그림은 번호 순서대로 명령어 "GRGLGRG"의 과정을 보여줍니다. 로봇에 입력된 명령어를 순서대로 담고 있는 문자열 command가 주어집니다. 로봇이 주어진 명령어들을 순서대로 모두 수행한 뒤 도착한 최종 위치의 좌푯값 x, y를 순서대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.
제한사항 1 ≤ commad의 길이 ≤ 1,000,000 command는 'R', 'L', 'G', 'B'으로 구성된 문자열입니다. command에 들어있는 문자 하나하나가 각 명령을 나타내며, 문자열에 먼저 등장하는 명령을 먼저 수행해야 합니다.
풀이:
def solution(command):
start = [0,0]
dir = [(0,1), # 위
(1,0), # 오른쪽
(0,-1),# 아래
(-1,0)] # 왼쪽
idx = 0
for i in command:
if i == "G":
start[0] += dir[idx][0]
start[1] += dir[idx][1]
elif i == "B":
start[0] -= dir[idx][0]
start[1] -= dir[idx][1]
elif i == "L":
idx = (idx+3) % 4
else:
idx = (idx+1) % 4
return start
print(solution("GRGLGRG"))
# print(solution("GRGRGRB"))
+3 하고 % 4 로나누는것을 생각해야함
반응형
댓글