본문 바로가기
백준알고리즘/구현

PCCP 모의고사 2회 ) 1번: 실습용 롯봇

by windy7271 2023. 6. 17.
728x90
반응형

문제 바로가기

https://school.programmers.co.kr/learn/courses/15009/lessons/121687
pccp 실습용 로봇

 

문제:

컴퓨터공학과에서는 실습용 로봇을 이용해서 로봇 프로그래밍을 학습합니다. 실습용 로봇은 입력된 명령에 따라 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 로나누는것을 생각해야함

반응형

댓글