https://www.acmicpc.net/problem/1939

 

1939번: 중량제한

첫째 줄에 N, M(1 ≤ M ≤ 100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1 ≤ A, B ≤ N), C(1 ≤ C ≤ 1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이

www.acmicpc.net


내 풀이

import sys
from collections import deque

input = sys.stdin.readline
    
def solution():
    n,m = map(int,input().split())
    graph = [[] for _ in range(n+1)]
    for _ in range(m):
        a,b,c = map(int,input().split())
        graph[a].append((b,c))
        graph[b].append((a,c))
    start,end = map(int,input().split())
    
    
    
    def bfs(k):
        q = deque([start])
        visit=[0]* (n+1)
        visit[start]=True
        
        while q:
            x = q.popleft()
            for i,j in graph[x]:
                if not visit[i] and j>=k:
                    visit[i]=1
                    q.append(i)
        return True if visit[end] else False
    
    def binary():
        answer=0
        left,right =0,int(1e9)
        
        while left<=right:
            mid = (left+right)//2
            if bfs(mid):
                answer = mid
                left = mid +1
            else:
                right = mid -1
        print(answer)
    binary()
solution()

개인적으로 좋은문제라고 생각했다!

bfs와 이진탐색의 결합이였는데 문제자체가 풀고나니 어렵지는 않았는데(전형적인 허세) 풀이과정을 생각해내기가 쉽지않아

구글링 좀 해보았다

 


다른사람의 풀이

 

 


https://velog.io/@ckstn0778/백준-1939번-중량제한-1-Python

 

백준 1939번 - 중량제한(★★★ / ▲▲ / 2) : Python

풀이 시간 : 30~40분시간 제한 : 1초메모리 제한 : 128 MB기출 : backjoon링크 : https://www.acmicpc.net/problem/1939N(2≤N≤10,000)개의 섬으로 이루어진 나라가 있다. 이들 중 몇 개의 섬 사이에는 다리

velog.io


 

'취준 > 백준' 카테고리의 다른 글

2504 - 파이썬  (0) 2022.11.17
10816(숫자카드 2) - 파이썬  (0) 2022.10.27
1806(부분합) - 파이썬  (0) 2022.10.24
1238 - 파이썬  (0) 2022.10.24
25755 - 파이썬  (0) 2022.10.21

+ Recent posts