일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BFS
- Django
- gradient descent
- Linear Model
- transformer
- deque
- Deeplearning
- attention
- 파이썬
- 일기
- LeetCode
- Python
- 부스트캠프
- NLP
- 프롬프트
- Programmers
- machinelearning
- 머신러닝
- 알고리즘
- 코딩테스트
- dl
- GPT
- LLM
- rnn
- prompt engineering
- Linear Regression
- 코테
- 기계학습
- ChatGPT
- 프로그래머스
- Today
- Total
크크루쿠쿠
[프로그래머스] 무인도 여행 파이썬 풀이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/154540
문제 설명:
메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 직사각형 격자 형태이며, 격자의 각 칸에는 'X' 또는 1에서 9 사이의 자연수가 적혀있습니다. 지도의 'X'는 바다를 나타내며, 숫자는 무인도를 나타냅니다. 이때, 상, 하, 좌, 우로 연결되는 땅들은 하나의 무인도를 이룹니다. 지도의 각 칸에 적힌 숫자는 식량을 나타내는데, 상, 하, 좌, 우로 연결되는 칸에 적힌 숫자를 모두 합한 값은 해당 무인도에서 최대 며칠동안 머물 수 있는지를 나타냅니다. 어떤 섬으로 놀러 갈지 못 정한 메리는 우선 각 섬에서 최대 며칠씩 머물 수 있는지 알아본 후 놀러갈 섬을 결정하려 합니다.
지도를 나타내는 문자열 배열 maps가 매개변수로 주어질 때, 각 섬에서 최대 며칠씩 머무를 수 있는지 배열에 오름차순으로 담아 return 하는 solution 함수를 완성해주세요. 만약 지낼 수 있는 무인도가 없다면 -1을 배열에 담아 return 해주세요.
제한사항:
- 3 ≤ maps의 길이 ≤ 100
- 3 ≤ maps[i]의 길이 ≤ 100
- maps[i]는 'X' 또는 1 과 9 사이의 자연수로 이루어진 문자열입니다.
- 지도는 직사각형 형태입니다.
풀이:
처음에 기본 bfs 로 풀려 했으나 휘어진 모양은(ex : _I) 실패해서 map의 크기도 작고 해서 그냥 완전탐색으로 풀었다.
계속 런타임 에러가 나는데 이유를 알 수 없었는데 잘 생각해보니까 python 은 recursive limit이 존재한다는걸 기억해내고 제한을 늘려주고 풀었더니 맞았다.
코드:
import sys
print(sys.setrecursionlimit(10000))
def bfs(maps, x, y, value):
if x >= len(maps[0]) or y >= len(maps) or x < 0 or y < 0:
return value
if maps[y][x] == "X":
return value
value += int(maps[y][x])
maps[y][x] = "X"
value = bfs(maps, x + 1, y, value)
value = bfs(maps, x - 1, y, value)
value = bfs(maps, x, y + 1, value)
value = bfs(maps, x, y - 1, value)
return int(value)
def solution(maps):
maps = [list(map(str, i)) for i in maps]
answer = []
for i in range(len(maps)):
for j in range(len(maps[0])):
if maps[i][j] == "X":
continue
else:
answer.append(bfs(maps, j, i, 0))
return sorted(answer) if answer else [-1]
'알고리즘' 카테고리의 다른 글
[프로그래머스] 인사고과 파이썬 (0) | 2023.02.01 |
---|---|
[프로그래머스] N으로 표현 파이썬 (0) | 2022.01.31 |
[프로그래머스] 게임 맵 최단거리 파이썬 (0) | 2021.07.01 |
[프로그래머스] 캐시 파이썬 (0) | 2021.06.30 |
[프로그래머스] 배달 파이썬 (0) | 2021.06.29 |