[COS Pro 1급 Python] 2차 기출문제 6) 로봇을 움직여주세요

정은·2023년 8월 11일

COS Pro 1급

목록 보기
17/26
post-thumbnail

문제 6)

로봇이 아래 그림과 같이 2차원 평면의 원점 (0, 0)에 서있습니다.

20180417_grid2.png

이 로봇은 x축 방향, 혹은 y축 방향으로만 움직일 수 있으며, 알파벳으로 명령을 내릴 수 있습니다. 명령을 내릴 때 사용하는 알파벳은 'L', 'R', 'U', 'D'의 4가지이며, 'L'은 x축 방향으로 -1만큼, 'R'은 x축 방향으로 +1만큼, 'U'는 y축 방향으로 +1만큼, 'D'는 y축 방향으로 -1 만큼 이동하라는 의미입니다.

로봇에게 내린 명령이 순서대로 들어있는 문자열 commands가 매개변수로 주어질 때, 주어진 명령을 모두 수행한 후의 로봇 위치를 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

로봇에게 내린 명령이 순서대로 들어있는 문자열 commands가 solution 함수의 매개변수로 주어집니다.

  • commands는 알파벳 대문자 'L', 'R', 'U', 'D'로만 이루어진 문자열이며, 길이는 1 이상 100 이하입니다.

return 값 설명

주어진 명령을 모두 수행한 후의 로봇 위치를 return 해주세요.

  • [x축 좌표, y축 좌표] 형태로 로봇의 최종 위치를 리스트에 담아 return 해주세요.

예시
commandsreturn
"URDDL"[0, -1]
예시 설명

"URDDL"명령에 따라 (0, 0)에 있는 로봇은 다음과 같이 움직입니다.

  • [0, 0] → [0, 1] → [1, 1] → [1, 0] → [1, -1] → [0, -1]

따라서 로봇의 최종 위치는 [0, -1]입니다.

주어진 문제 6) 코드

#다음과 같이 import를 사용할 수 있습니다.
#import math

def solution(commands):
    # 여기에 코드를 작성해주세요.
    answer = []
    return answer

#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
commands = "URDDL"
ret = solution(commands)

#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret, " 입니다.")

Solution

주어진 문제 6) Solution 코드

이번에도 빈칸 채우기 문제가 아니라 함수 전체를 작성하는 문제이다.

#다음과 같이 import를 사용할 수 있습니다.
#import math

def solution(commands):
    # 여기에 코드를 작성해주세요.
    answer = [0, 0]
    robot_directs = {"L": "-1,0", "R": "1,0", "U": "0,1", "D": "0,-1"}

    for command in commands:
        direct = robot_directs[command].split(',')

        answer[0] += int(direct[0])
        answer[1] += int(direct[1])

    return answer

#아래는 테스트케이스 출력을 해보기 위한 코드입니다.
commands = "URDDL"
ret = solution(commands)

#[실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret, " 입니다.")
  • 딕셔너리의 키를 명령 문자 L,R,U,D로 지정하고 각 명령 문자에서 사용할 이동 문자열을 split한 값을 활용

해당 문제는 매개변수 commands로 전달된 문자열 안의 문자를 하나씩 가져와 문자별 지정된 방향으로 좌표를 이동시킨 후 마지막 좌표의 위치를 출력하는 문제이다.

다른 문제 풀이 방식

딕셔너리 이용 (튜플로 정의)

def solution(commands):
    answer = [0, 0]
    rule = {'L': (-1, 0), 'R': (1, 0), 'U': (0, 1), 'D': (0, -1)}

    print( rule["L"],rule["L"][0],rule["L"][1] )

    for c in commands:
        answer[0] += rule[c][0]
        answer[1] += rule[c][1]
    return answer


commands = "URDDL"
ret = solution(commands)

# [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
print("solution 함수의 반환 값은 ", ret, " 입니다.")
  • 딕셔너리의 키를 명령 문자 L, R, U, D로 지정하고 각 명령 문자에서 사용할 이동 규칙을 튜플로 정의한 값을 지정해서 활용한다.
profile
정니의 이런거 저런거 기록 일지 😛

0개의 댓글