본문 바로가기
Algorithm/구현

[프로그래머스] PCCP 모의고사 2회 1번 실습용 로봇

by HANNI하니 2023. 12. 15.

사용 언어 - Python3

문제 - 실습용 로봇

https://school.programmers.co.kr/learn/courses/15009/lessons/121687

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답

구현

방향에 따라 바뀌는 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]

 

 

 

 

 

레퍼런스

 

 

 

 
 

댓글