Search

๊น€๋ฏผ์ง€

2.๋ฌธ์ œ์ด๋ฆ„
3. ์ˆ˜ํ–‰์‹œ๊ฐ„[์ดˆ(s)]
700
์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ
์ข‹์•„์š” ์ˆ˜
: 0
5 more properties
| ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
import heapq, sys def solution(N, road, K): distance=[sys.maxsize]*(N+1) graph=[[] for _ in range(N+1)] for r in road : graph[r[0]].append([r[1], r[2]]) graph[r[1]].append([r[0], r[2]]) def dijkstra(start) : distance[start]=0 q=[] heapq.heappush(q, [0, start]) while q : weight, node=heapq.heappop(q) for next_node, wei in graph[node]: if wei+weight<distance[next_node]: distance[next_node]=wei+weight heapq.heappush(q, [wei+weight, next_node]) dijkstra(1) return len([x for x in distance if x<=K])
Python
๋ณต์‚ฌ
| ์ฝ”๋“œ ์„ค๋ช…ํ•˜๊ธฐ
๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ์ •์ 1์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋ชจ๋“  ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ–ˆ๋‹ค.
๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ heapq๋ฅผ ์ด์šฉํ•ด ํ’€์—ˆ๋‹ค.
1.
๊ฒฝ๋กœ๋ฅผ ๊ทธ๋ž˜ํ”„์— ์ €์žฅ์„ ํ•œ๋‹ค.
2.
์‹œ์ž‘ ์ •์ -์‹œ์ž‘์ •์  ๊ฑฐ๋ฆฌ๋ฅผ 0์œผ๋กœ ํ•˜๊ณ  heapq์— [๋น„์šฉ, ์ •์ ]์„ ์‚ฝ์ž…ํ•œ๋‹ค.
a.
heapq์— ์‚ฝ์ž…ํ•  ๋•Œ๋Š” [๋น„์šฉ, ์ •์ ] ์ˆœ์œผ๋กœ ๋„ฃ์–ด์•ผ ๋น„์šฉ ๊ธฐ์ค€์œผ๋กœ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
3.
heapq๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์„ ํ•œ๋‹ค.
a.
queue์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์›์†Œ๋ฅผ popํ•œ๋‹ค.
b.
ํ•ด๋‹น node์™€ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ํ•˜๋‚˜์”ฉ ๋‘˜๋Ÿฌ๋ณธ๋‹ค.
c.
๊ฐ€์ค‘์น˜๋ฅผ ๋น„๊ตํ•ด์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์ž‘๋‹ค๋ฉด ์—ฐ๊ฒฐ๋œ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ updateํ•˜๊ณ  heapq์— ์‚ฝ์ž…ํ•œ๋‹ค.
4.
๋ฐฐ๋‹ฌํ•œ ์‹œ๊ฐ„์ด K๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.