๐Ÿ“๋ฌธ์ œ ํ’€์ด

    [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌด์ง€์˜ ๋จน๋ฐฉ ๋ผ์ด๋ธŒ | Heap(ํž™) | 2019 KAKAO BLIND RECRUITMENT

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://school.programmers.co.kr/learn/courses/30/lessons/42891 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ๊ฐ€์žฅ ์ž‘์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์Œ์‹ ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•œ๋‹ค. (heapq ์‚ฌ์šฉ) - ๋งŒ์•ฝ ๋ชจ๋“  ์Œ์‹์˜ ๊ฐœ์ˆ˜ ๋ณด๋‹ค k๊ฐ€ ํฌ๋‹ค๋ฉด ๋ชจ๋“  ์Œ์‹์„ ๋จน๊ณ ๋„ ์‹œ๊ฐ„์ด ๋‚จ๋Š” ๊ฒƒ์ด๋ฏ€๋กœ -1 ๋ฐ˜ํ™˜ - ํ•œ๋ฒˆ์˜ ๋กœํ…Œ์ด์…˜์„ ์œ„ํ•ด ํ•„์š”ํ•œ ์Œ์‹ ๊ฐœ์ˆ˜๋Š”, 0์ด ์•„๋‹Œ ์Œ์‹์˜ ์ˆ˜์ด๋‹ค.(length) - (๋‹ค์Œ ์ตœ์†Œ ์Œ์‹ ๊ฐœ์ˆ˜) - (์ด์ „์— ์ฒ˜๋ฆฌํ•œ ์Œ์‹ ๊ฐœ์ˆ˜) = ํ˜„์žฌ ์ฒ˜๋ฆฌํ•ด์•ผ..

    [Python] ๋ฐฑ์ค€ 4485 ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€? | ๋‹ค์ต์ŠคํŠธ๋ผ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/4485 4485๋ฒˆ: ๋…น์ƒ‰ ์˜ท ์ž…์€ ์• ๊ฐ€ ์ ค๋‹ค์ง€? ์ ค๋‹ค์˜ ์ „์„ค ๊ฒŒ์ž„์—์„œ ํ™”ํ์˜ ๋‹จ์œ„๋Š” ๋ฃจํ”ผ(rupee)๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ฐ„ํ˜น '๋„๋‘‘๋ฃจํ”ผ'๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ฒ€์ •์ƒ‰ ๋ฃจํ”ผ๋„ ์กด์žฌํ•˜๋Š”๋ฐ, ์ด๊ฑธ ํš๋“ํ•˜๋ฉด ์˜คํžˆ๋ ค ์†Œ์ง€ํ•œ ๋ฃจํ”ผ๊ฐ€ ๊ฐ์†Œํ•˜๊ฒŒ ๋œ๋‹ค! ์ ค๋‹ค์˜ ์ „์„ค ์‹œ๋ฆฌ์ฆˆ์˜ ์ฃผ www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ ์œ„์น˜๋ณ„ (0, 0)์—์„œ ์ตœ์†Œ ๋น„์šฉ์„ ๊ณ„์‚ฐ - dr, dc : ๊ฐ ์œ„์น˜์—์„œ ์•„๋ž˜, ์œ„, ์˜ค๋ฅธ์ชฝ, ์™ผ์ชฝ ์œ„์น˜๋ฅผ ๋ฐฉ๋ฌธ ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉํ–ฅํ‚ค - graph : ๊ฐ ์œ„์น˜ ๋ฐฉ๋ฌธ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋น„์šฉ - distance : ๊ฐ ์œ„์น˜์—์„œ (0, 0)๊นŒ์ง€ ๊ฐ€๊ธฐ์œ„ํ•œ ์ตœ์†Œ ๋น„์šฉ, ์ดˆ๊ธฐ๋Š” ๋ฌดํ•œ์ˆ˜ ์ž‘์„ฑ ์ฝ”๋“œ imp..

    [Python] ๋ฐฑ์ค€ 1504 ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ | ๋‹ค์ต์ŠคํŠธ๋ผ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/1504 1504๋ฒˆ: ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ E๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ์„ธ ๊ฐœ์˜ ์ •์ˆ˜ a, b, c๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, a๋ฒˆ ์ •์ ์—์„œ b๋ฒˆ ์ •์ ๊นŒ์ง€ ์–‘๋ฐฉํ–ฅ ๊ธธ์ด ์กด www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - v1 -> v2 ์ˆœ์„œ ๋˜๋Š” v2 -> v1 ์ˆœ์„œ ๊ฐ๊ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜์—ฌ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. (2๋ฒˆ์˜ ๋‹ค์ต์ŠคํŠธ๋ผ) - ๊ฒฝ๋กœ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ(๊ฒฐ๊ณผ ๊ฐ’์ด INF๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ) -1์„ ์ถœ๋ ฅ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฝ”๋“œ ์ฃผ์„ ์ฐธ๊ณ  ์ž‘์„ฑ ์ฝ”๋“œ import sys import heapq input =..

    [Python] ๋ฐฑ์ค€ 13549 ์ˆจ๋ฐ”๊ผญ์งˆ 3 | ๋‹ค์ต์ŠคํŠธ๋ผ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/13549 13549๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ 3 ์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ www.acmicpc.net ์ž‘์„ฑ ์ฝ”๋“œ import heapq INF = int(1e9) N, K = map(int, input().split()) # ์‹œ์ž‘ ์œ„์น˜, ๋„์ฐฉ ์œ„์น˜ distance = [INF]*100001 # 100001๊ฐœ์˜ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ def dijkstra(start): # ๋‹ค์ต์ŠคํŠธ๋ผ distance[start] = 0 # ์‹œ์ž‘..

    [Python] ๋ฐฑ์ค€ 1916 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ | ์‹œ๊ฐ„์ดˆ๊ณผ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/1916 1916๋ฒˆ: ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ๋ฒ„์Šค์˜ ๊ฐœ์ˆ˜ M(1 ≤ M ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์…‹์งธ ์ค„๋ถ€ํ„ฐ M+2์ค„๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ„์Šค์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋จผ์ € ์ฒ˜์Œ์—๋Š” ๊ทธ www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ๋ฐ›์„ ์ž…๋ ฅ์ด ๋งŽ์œผ๋ฏ€๋กœ sys.stdin.realine ์„ ์‚ฌ์šฉํ•œ๋‹ค. (์‹œ๊ฐ„ ์ดˆ๊ณผ ํ•ด๊ฒฐ) - ์ „ํ˜•์ ์ธ ๋‹ค์ต์ŠคํŠธ๋ผ ๋ฌธ์ œ ์œ ํ˜•์ด๋‹ค - ์šฐ์„ ์ˆœ์œ„ ํ(์ตœ์†Œํž™)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์†Œ ๊ฑฐ๋ฆฌ ๋…ธ๋“œ๋ฅผ ์„ ํƒ - distance : start ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅ (INF ๋กœ ์ดˆ๊ธฐํ™”) - graph : ๊ฐ ..

    [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ€์žฅ ๋จผ ๋…ธ๋“œ | BFS | ๋‹ค์ต์ŠคํŠธ๋ผ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://school.programmers.co.kr/learn/courses/30/lessons/49189 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - BFS์™€ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‘ ๊ฐ€์ง€ ํ’€์ด ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐ (DFS๋„ ๊ฐ€๋Šฅํ•˜๋‚˜ python์€ DFS ํšจ์œจ์ด ์ข‹์ง€ ๋ชป ํ•จ) ์ž์„ธํ•œ ์„ค๋ช…์€ ์ฃผ์„ ์ฐธ๊ณ  ์ž‘์„ฑ ์ฝ”๋“œ BFS ํ’€์ด from collections import deque def solution(n, edge): que = deque() # BFS๋ฅผ ์œ„ํ•œ ํ graph = [[]..

    [Python] ๋ฐฑ์ค€ 11404 ํ”Œ๋กœ์ด๋“œ | ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/11404 11404๋ฒˆ: ํ”Œ๋กœ์ด๋“œ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์ง€๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ๋ฒ„์Šค์˜ ๊ฐœ์ˆ˜ m์ด ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์…‹์งธ ์ค„๋ถ€ํ„ฐ m+2์ค„๊นŒ์ง€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ„์Šค์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋จผ์ € ์ฒ˜์Œ์—๋Š” ๊ทธ ๋ฒ„์Šค์˜ ์ถœ๋ฐœ ๋„์‹œ์˜ ๋ฒˆํ˜ธ๊ฐ€ www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - graph : 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋…ธ๋“œ ๋ณ„ ๊ฐ ๋…ธ๋“œ๊นŒ์˜ ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•œ๋‹ค. graph[i][j] ๋Š” i์—์„œ j๋กœ ๊ฐ€๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์ด๋™ ๊ฑฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•จ - ๊ฐ ๊ฐ„์„  ์ •๋ณด๋ฅผ ๋”ฐ๋ผ ๋ฌดํ•œ์ˆ˜(INF)๋กœ ์ดˆ๊ธฐํ™” ํ•œ graph๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. ๋™์ผํ•œ ๋…ธ์„ ์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ„์„ ์ด ์žˆ์Œ์œผ๋กœ ์ฃผ์˜ ํ•„์š” - a -> b ๋…ธ์„ ์— ๋Œ€..

    [Python] ๋ฐฑ์ค€ 18352 ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ | ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/18352 18352๋ฒˆ: ํŠน์ • ๊ฑฐ๋ฆฌ์˜ ๋„์‹œ ์ฐพ๊ธฐ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N, ๋„๋กœ์˜ ๊ฐœ์ˆ˜ M, ๊ฑฐ๋ฆฌ ์ •๋ณด K, ์ถœ๋ฐœ ๋„์‹œ์˜ ๋ฒˆํ˜ธ X๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๋‘ ๊ฐœ www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - distance : X๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ. ๊ฒฝ๋กœ๊ฐ€ ์—†๋‹ค๋ฉด ๋ฌดํ•œ์ˆ˜(INF) - graph : ๊ฐ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •๋ณด (์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) - q : ์ง€๊ธˆ๊นŒ์ง€ ๊ณ„์‚ฐ ๋œ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ„์„ ์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ..

    [Python] ๋ฐฑ์ค€ 1753 ์ตœ๋‹จ ๊ฒฝ๋กœ | ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    ~๋ชฉ์ฐจ~ ๋ฌธ์ œ ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ ์ž‘์„ฑ ์ฝ”๋“œ ๋ฌธ์ œ https://www.acmicpc.net/problem/1753 1753๋ฒˆ: ์ตœ๋‹จ๊ฒฝ๋กœ ์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ V์™€ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ E๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) ๋ชจ๋“  ์ •์ ์—๋Š” 1๋ถ€ํ„ฐ V๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์‹œ์ž‘ ์ •์ ์˜ ๋ฒˆํ˜ธ K(1 ≤ K ≤ V)๊ฐ€ www.acmicpc.net ๋ฌธ์ œ ํ•ด๊ฒฐ ํฌ์ธํŠธ - ๋Œ€ํ‘œ์ ์ธ ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ - ์‹œ์ž‘๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๊นŒ์ง€ ์ตœ์†Œ ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด(distance)์„ ๋ฌดํ•œ์ˆ˜(INF)๋กœ ์ดˆ๊ธฐํ™” - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ graph๋ฅผ ์„ ์–ธํ•˜์—ฌ ๊ฐ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€์™€ ๋ฌด๊ฒŒ๋ฅผ ํŠœ๋ธ”ํ˜•ํƒœ๋กœ ์ €์žฅ : graph[i][0]์€ i์™€ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ์˜๋ฏธํ•˜๊ณ  ..