일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프로그래머스 알고리즘 공부
- Java
- 채권
- 독후감
- algorithmStudy
- C++
- C
- 재테크
- 독서
- 투자
- 다독
- 지혜를가진흑곰
- algorithmtraining
- 화장품
- 자바스크립트
- 주식
- 성분
- 경제
- 자바
- 책알남
- 알고리즘공부
- 백준알고리즘
- 책을알려주는남자
- 프로그래밍언어
- algorithmTest
- JavaScript
- 알고리즘 공부
- 돈
- 서평
- 알고리즘트레이닝
Archives
- Today
- Total
탁월함은 어떻게 나오는가?
[Algorithm] 리코쳇 로봇 ( Programmers / Python ) 본문
[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training
[Algorithm] 리코쳇 로봇 ( Programmers / Python )
Snow-ball 2024. 3. 14. 20:24반응형
문제 설명
리코쳇 로봇이라는 보드게임이 있습니다.
이 보드게임은 격자모양 게임판 위에서 말을 움직이는 게임으로, 시작 위치에서 목표 위치까지 최소 몇 번만에 도달 할 수 있는지 말하는 게임입니다.
이 게임에서 말의 움직임은 상, 하, 좌, 우 4방향 중 하나를 선택해서 게임판 위에 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 이동으로 칩니다.
다음은 보드게임판을 나타낸 예시입니다.
여기서 "."은 빈 공간을, "R"은 로봇의 처음 위치를, "D"는 장애물의 위치를, "G"는 목표지점을 나타냅니다.
위 예시에서는 "R" 위치에서 아래, 왼쪽, 위, 왼쪽, 아래, 오른쪽, 위 순서로 움직이면 7번 만에 "G" 위치에 멈춰 설 수 있으며, 이것이 최소 움직임 중 하나입니다.
게임판의 상태를 나타내는 무자열 배열 board 가 주어졌을 때, 말이 목표위치에 도달하는데 최소 몇 번 이동해야 하는지 return 하는 solution 함수를 완성하세요. 만약 목표위치에 도달할 수 없다면 -1을 해주세요.
제한사항
입출력 예
문제 풀이
python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
def solution(board):
N = len(board)
M = len(board[0])
queue = [[0, 0, 0]]
for a in range(N):
for b in range(M):
if 'R' == board[a][b]:
queue[0][0], queue[0][1] = a, b
break
check_coordinates_list = [[float('inf') for _ in range(M)] for _ in range(N)]
check_coordinates_list[queue[0][0]][queue[0][1]] = 0
directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
while queue:
x, y, c = queue.pop(0)
if board[x][y] == 'G':
return c
for i in range(4):
nx, ny = x, y
dx, dy = directions[i]
while 0 <= nx + dx < N and 0 <= ny + dy < M and board[nx + dx][ny + dy] != 'D':
nx += dx
ny += dy
if check_coordinates_list[nx][ny] > c + 1:
check_coordinates_list[nx][ny] = c + 1
queue.append([nx, ny, c + 1])
return -1
|
cs |
https://school.programmers.co.kr/learn/courses/30/lessons/169199
반응형
'[Snow-ball]프로그래밍(컴퓨터) > Algorithm Training' 카테고리의 다른 글
[Algorithm] 무인도 여행 ( Programmers / Python ) (1) | 2024.03.24 |
---|---|
[Algorithm] 미로 탈출 ( Programmers / Python, JavaScript ) (0) | 2024.03.21 |
[Algorithm] 구명보트 ( Programmers / Python && Java ) (1) | 2024.03.06 |
[Algorithm] 도넛과 막대 그래프 (Programmers - 2024 KAKAO WINTER INTERSHIP / python ) (0) | 2024.03.04 |
[Agorithm] 석유 시추 ( Programmers - PCCP 기출문제 2번 / Python, Javascript ) (0) | 2024.02.27 |
Comments