https://school.programmers.co.kr/learn/courses/30/lessons/12978

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


내 풀이

 

1.

import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)

def solution(N,road,K):
    graph = [[] for _ in range(N+1)]
    distance = [INF] * (N+1)
    distance[1]=0
    for r in road:
        graph[r[0]].append((r[1],r[2]))
        graph[r[1]].append((r[0],r[2]))
    def ekdlrtmxmfk():
        q=[]
        heapq.heappush(q,(0,1))
        
        while q:
            dist,now = heapq.heappop(q)
            #print((dist,now))
            #print(dist)
            if distance[now] < dist:
                continue
            for i in graph[now]:
                cost = dist + i[1]
                if cost < distance[i[0]]:
                    distance[i[0]] = cost
                    heapq.heappush(q,(cost,i[0]))
    ekdlrtmxmfk()
    #print(graph)
    #print(distance)
    return len([x for x in distance if x<=K])

2.

 

import heapq
import sys
input = sys.stdin.readline
INF = int(1e9)

def solution(N,road,K):
    graph = [[] for _ in range(N+1)]
    distance = [INF] * (N+1)
    distance[1]=0
    for r in road:
        graph[r[0]].append((r[2],r[1]))
        graph[r[1]].append((r[2],r[0]))
    def ekdlrtmxmfk():
        q=[]
        heapq.heappush(q,(0,1))
        
        while q:
            dist,now = heapq.heappop(q)
            #print((dist,now))
            #print(dist)
            if distance[now] < dist:
                continue
            for i,j in graph[now]:
                if i+dist < distance[j]:
                    distance[j] = i+dist
                    heapq.heappush(q,(dist+i,j))
    ekdlrtmxmfk()
    
    return len([x for x in distance if x<=K])

대표적인 다익스트라 알고리즘이다.

너무 오랜만에 풀어서 진짜 한참 헤맸다..

처음에는 visit를 만들어서 풀었는데, 시간초과 나서 heapq을 썼다.

다익스트라 알고리즘이 적용가능할 때는 음의 값이 없을때임을 명심해야한다.

1 번풀이 2번풀이 둘다 비슷한데 1번은 이코테의 내용을 참고했다.

1번이 좀 더 직관적인 풀이법같다.

두 풀이법의 가장 큰 차이점은, (노드,가중치 ) 의 순서가 다르다.

 


다른사람의 풀이

 

 



 

'취준 > 프로그래머스' 카테고리의 다른 글

두 큐 합 같게 만들기 - 파이썬  (0) 2022.08.31
성격 유형 검사하기 - 파이썬  (0) 2022.08.31
괄호 회전하기 - 파이썬  (0) 2022.07.25
게임 맵 최단거리 - 파이썬  (0) 2022.07.05
조이스틱 - 파이썬  (0) 2022.07.03

+ Recent posts