나의 작은 valley
[cosPro 1급] 로봇 이동 본문
로봇이 아래 그림과 같이 2차원 평면의 원점 (0, 0)에 서있습니다.

이 로봇은 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 해주세요.
코드 1)
def solution(commands):
x,y = 0,0 #초기 위치
#상하좌우
actions = ["U","D","L","R"]
dx = [0,0,-1,1]
dy = [1,-1,0,0]
for i in commands:
for j in range(len(actions)):
if i == actions[j]:
x = x + dx[j]
y = y + dy[j]
return [x,y]
commands = "URDDL"
print(solution(commands))
코드 2)
def solution(commands):
x,y = 0,0 #초기 위치
#상하좌우
move = dict(zip('LRUD',[[-1,0],[1,0],[0,1],[0,-1]]))
for c in commands:
dx, dy = move[c]
x += dx
y += dy
return [x,y]
commands = "URDDL"
print(solution(commands))
두 코드의 차이점은 명령어(LRUD)가 주워졌을 떄 해당 명령과 실제 이동을 연결하는 방법이 틀리다.
첫번쨰는 인덱스로 두번쨰는 dict로 접근했는데 두번쨰가 제일 깔끔한 풀이 같다.
물론
for command in commands:
if command == "U":
elif command == "R":
elif command == "L":
elif command == "D":
이런 식으로 짜신 분들도 있으실텐데 저도 처음에는 저렇게 짰으니깐 너무 상심하지 않으셔도 됩니다 :)
'Computer Science > [알고리즘]' 카테고리의 다른 글
[cosPro 1급] 비숍, 전광판 어플 구현 (0) | 2023.08.13 |
---|---|
[cosPro 1급] 최소 동전 (0) | 2023.08.13 |
[cosPro 1급] 팰린드롬 우열 가리기 (0) | 2023.08.13 |
[cosPro 1급] 배열 회전 (0) | 2023.08.13 |
[cosPro 1급] 연속 0처리 (0) | 2023.08.13 |