[백준] 2589번 보물섬 - python 파이썬

2024. 10. 22. 15:39·코딩테스트/백준

문제

 

 

 

이 문제를 보면 일단 최단거리라는 단어가 나오기 때문에 BFS일 확률이 높다. 

 

다만 이 문제는 육지에 해당되는 모든 지점에서 다른 지점까지의 최단거리의 값중 최댓값을 구해주는 것이므로 육지를 만날때마다 BFS함수를 실행해주는 형태로 해주면 된다.

 

 

 

정답 코드

import sys
from collections import deque
input = sys.stdin.readline

# 첫 번째 줄에서 n과 m을 읽음 (행의 수와 열의 수)
n, m = map(int, input().split())

# n개의 행을 지도 배열로 읽어들임
arr = [list(input().strip()) for _ in range(n)]


def bfs(a,b):
    ans = [[0]*m for _ in range(n)]
    q = deque()
    q.append((a,b))
    #첫번째 지점 방문처리하기 위해 1로 시작
    ans[a][b] = 1
    #각 지점별 최댓값을 저장해줄 변수
    mx = 0

    dx = [-1,1,0,0]
    dy = [0,0,-1,1]
    while(q):
        a,b = q.popleft()
        for i in range(4):
            x = dx[i] + a
            y = dy[i] + b
            #범위안에 있고 육지이고 아직 방문한적없는 칸이면
            if 0<=x<n and 0<=y<m and arr[x][y] != 'W' and ans[x][y] == 0:
                ans[x][y] = ans[a][b] + 1
                mx = max(mx, ans[x][y])
                q.append((x,y))

    #1로 시작했으므로 -1을 해줌
    return mx-1

ans = 0
for i in range(n):
    for j in range(m):
        #육지라면
        if arr[i][j] == "L":
            ans = max(ans,bfs(i,j))
print(ans)

 

 

 

다만 python으로 답안 제출하면 시간초과가 뜬다....

아무래도 모든지점에서 BFS를 실행하다 보니 범위가 작아도 시간초과가 뜨는 것이다. 그래서 pypy3 로 제출해서 정답인정 받았다.

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 10799번 쇠막대기 - python 파이썬  (0) 2024.10.31
[백준]2467번 용액 - python파이썬  (2) 2024.10.23
[백준] 16928번 뱀과 사다리게임 -python 파이썬  (3) 2024.10.22
[백준]2096번 내려가기 - python 파이썬 feat.메모리초과 오류 해결  (1) 2024.10.17
[백준]1068번 트리 - ptyhon파이썬  (2) 2024.10.16
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 10799번 쇠막대기 - python 파이썬
  • [백준]2467번 용액 - python파이썬
  • [백준] 16928번 뱀과 사다리게임 -python 파이썬
  • [백준]2096번 내려가기 - python 파이썬 feat.메모리초과 오류 해결
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python
    Java
    신한투자증권
    백트래킹
    알파코캠퍼스
    AWS
    백준
    프디아
    K디지털트레이닝
    투포인터
    UnionFind
    알파코
    프로디지털아카데미
    파이썬
    코딩테스트
    spring
    BFS
    EC2
    알고리즘
    다익스트라
    깃허브
    프로그래머스
    MSA
    그리디
    bastion host
    github
    IT기획
    코테
    kdt교육
    백엔드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준] 2589번 보물섬 - python 파이썬
상단으로

티스토리툴바