문제
https://school.programmers.co.kr/learn/courses/15009/lessons/121687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
def solution(command):
dxy = [[0,1], [1,0], [0,-1], [-1, 0]] # 12시, 3시, 6시, 9시 방향으로 회전
x = 0 # x좌표
y = 0 # y좌표
dir = 0 # 방향 (dxy 배열의 dir 번째 배열을 선택해 좌표 이동)
for c in command:
if c == 'R': # 오른쪽으로 회전
dir = (dir+1)%4
elif c == 'L':
dir = (dir-1)%4
elif c == 'G':
x += dxy[dir][0]
y += dxy[dir][1]
else:
x -= dxy[dir][0]
y -= dxy[dir][1]
return [x,y]
설명
- 미로찾기 등의 bfs, dfs 문제에서 dx, dy 배열을 선언하여 좌표 이동 값을 저장하고 리스트의 인덱스 번호를 지정해 해당 하는 값 만큼 좌표 평면 위를 이동하였다.
- 이 문제도 각 방향에 대해 이동하는 dxy 리스트를 선언해서 각 방향으로 이동 시 움직이게 되는 좌표를 미리 선언한다.
이 문제는 방향도 체크 해야 함!
12시, 3시, 6시, 9시
R, L 의 경우에는 방향만 회전
G, B 의 경우 칸 수 이동!

'Coding Test > Python' 카테고리의 다른 글
| [PCCP 모의고사 #2] 2번 - 신입사원 교육 (5) | 2024.03.18 |
|---|---|
| [PCCP 모의고사 2] 3번 (0) | 2024.03.13 |
| [PCCP 모의고사 #1] 3번 - 유전법칙 (0) | 2024.03.04 |
| [백준] N과 M (1) (0) | 2023.09.27 |
| [백준] 수 이어 쓰기 1 (0) | 2023.09.15 |