๐Ÿ—๏ธ Algorithm 344

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 1806๋ฒˆ_๋ถ€๋ถ„ํ•ฉ

๋ฌธ์ œ https://www.acmicpc.net/problem/1806 1806๋ฒˆ: ๋ถ€๋ถ„ํ•ฉ ์ฒซ์งธ ์ค„์— N (10 ≤ N < 100,000)๊ณผ S (0 < S ≤ 100,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜์—ด์˜ ๊ฐ ์›์†Œ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1806๋ฒˆ ๋ฌธ์ œ - ๋ถ€๋ถ„ํ•ฉ import sys input = sys.stdin.readline n, s = map(int, input().split()) num = list(map(int, input().split())) target, left, right = 0, 0, 0 min_length = 1e9 while True: # print("left: ", lef..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 11722๋ฒˆ_๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด

๋ฌธ์ œ https://www.acmicpc.net/problem/11722 11722๋ฒˆ: ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A = {10, 30, 10, 20, 20, 10} ์ธ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ A = {10, 30, 10, 20, 20, 10} www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 11722๋ฒˆ ๋ฌธ์ œ - ๊ฐ€์žฅ ๊ธด ๊ฐ์†Œํ•˜๋Š” ๋ถ€๋ถ„์ˆ˜์—ด n = int(input()) arr = list(map(int, input().split())) dp = [1] * n for i in range(n): for j in range(1, i): if arr[i] < arr[j]: dp[i] = max(dp..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 2636๋ฒˆ_์น˜์ฆˆ

๋ฌธ์ œ https://www.acmicpc.net/problem/2636 2636๋ฒˆ: ์น˜์ฆˆ ์•„๋ž˜ ๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ํŒ์ด ์žˆ๊ณ , ๊ทธ ์œ„์— ์–‡์€ ์น˜์ฆˆ(ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋œ ๋ถ€๋ถ„)๊ฐ€ ๋†“์—ฌ ์žˆ๋‹ค. ํŒ์˜ ๊ฐ€์žฅ์ž๋ฆฌ(์—์„œ ๋„ค๋ชจ ์นธ์— X์นœ ๋ถ€๋ถ„)์—๋Š” ์น˜์ฆˆ๊ฐ€ ๋†“ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 2636๋ฒˆ ๋ฌธ์ œ - ์น˜์ฆˆ from collections import deque dx, dy = [0,0,-1,1], [1,-1,0,0] n, m = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] def bfs(): visited = [[0]*m for _ in range(n)] q = deq..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 1744๋ฒˆ_์ˆ˜ ๋ฌถ๊ธฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/1744 1744๋ฒˆ: ์ˆ˜ ๋ฌถ๊ธฐ ๊ธธ์ด๊ฐ€ N์ธ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๊ทธ๋ƒฅ ๊ทธ ์ˆ˜์—ด์˜ ํ•ฉ์„ ๋ชจ๋‘ ๋”ํ•ด์„œ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ˆ˜์—ด์˜ ๋‘ ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ค ์ˆ˜๋ฅผ ๋ฌถ์œผ๋ ค๊ณ  ํ•  ๋•Œ, ์œ„์น˜์— www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1744๋ฒˆ ๋ฌธ์ œ - ์ˆ˜ ๋ฌถ๊ธฐ n = int(input()) minus_list = [] plus_list = [] one_list = [] answer = 0 for i in range(n): num = int(input()) if num 1: plus_list.append(num) else: one_list.append(num) plus_list.sort(reverse=Tr..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold2] 1202๋ฒˆ_๋ณด์„ ๋„๋‘‘

๋ฌธ์ œ https://www.acmicpc.net/problem/1202 1202๋ฒˆ: ๋ณด์„ ๋„๋‘‘ ์ฒซ์งธ ์ค„์— N๊ณผ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, K ≤ 300,000) ๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๊ฐ ๋ณด์„์˜ ์ •๋ณด Mi์™€ Vi๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Mi, Vi ≤ 1,000,000) ๋‹ค์Œ K๊ฐœ ์ค„์—๋Š” ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋ฌด๊ฒŒ Ci๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ Ci www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1202๋ฒˆ ๋ฌธ์ œ - ๋ณด์„ ๋„๋‘‘ import sys, heapq input = sys.stdin.readline n, k = map(int, input().split()) jewelry = [list(map(int, input().split())) for _ in range(n)] bags = [int(input()) ..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 1715๋ฒˆ_์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/1715 1715๋ฒˆ: ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ ์ •๋ ฌ๋œ ๋‘ ๋ฌถ์Œ์˜ ์ˆซ์ž ์นด๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๊ฐ ๋ฌถ์Œ์˜ ์นด๋“œ์˜ ์ˆ˜๋ฅผ A, B๋ผ ํ•˜๋ฉด ๋ณดํ†ต ๋‘ ๋ฌถ์Œ์„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜๋กœ ๋งŒ๋“œ๋Š” ๋ฐ์—๋Š” A+B ๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, 20์žฅ์˜ ์ˆซ์ž ์นด๋“œ ๋ฌถ์Œ๊ณผ 30์žฅ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1715๋ฒˆ ๋ฌธ์ œ - ์นด๋“œ ์ •๋ ฌํ•˜๊ธฐ import heapq import sys input = sys.stdin.readline n = int(input()) cards = [] result = 0 for i in range(n): heapq.heappush(cards, int(input())) if len(cards) == 1: print(0) else: while..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 11660๋ฒˆ_๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 5

๋ฌธ์ œ https://www.acmicpc.net/problem/11660 ํ’€์ด # ๋ฐฑ์ค€ 11660๋ฒˆ ๋ฌธ์ œ - ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 5 n, m = map(int, input().split()) graph = [] graph = [list(map(int, input().split())) for _ in range(n)] dp = [[0] * (n+1) for _ in range(n+1)] for i in range(1, n+1): for j in range(1, n+1): dp[i][j] = dp[i-1][j]+ dp[i][j-1] - dp[i-1][j-1] + graph[i-1][j-1] for i in range(m): x1, y1, x2, y2 = map(int, input().split()) result..

[Python] ํŒŒ์ด์ฌ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

์šฐ์„ ์ˆœ์œ„ ํ (Priority Queue) โœ” ์šฐ์„ ์ˆœ์œ„ ํ? ํ์™€ ์Šคํƒ์ด๋‚˜ ๋น„์Šทํ•œ ์ž๋ฃŒํ˜•์ด์ง€๋งŒ, ๊ฐ ์›์†Œ๋“ค์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋Š” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋œ๋‹ค. ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค๋ฉด, ๋จผ์ € ๋“ค์–ด์˜จ ์›์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ํž™(Heap)์ด๋ผ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ตœ์†Œํ•œ ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ด ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์›์†Œ๋ฅผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜ (Push) ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋ฅผ ํ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ (Pop) โœ” ํž™(Heap) ์ด๋ž€? ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)๋กœ, ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋“ค์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜(Max Heap), ์ž‘์•„์•ผ..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 18111๋ฒˆ_๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ

๋ฌธ์ œ https://www.acmicpc.net/problem/18111 18111๋ฒˆ: ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ํŒ€ ๋ ˆ๋“œ์‹œํ”„ํŠธ๋Š” ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ง€๋ฃจํ•ด์ ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒŒ์ž„์ธ ‘๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ’๋ฅผ ์ผฐ๋‹ค. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” 1 × 1 × 1(์„ธ๋กœ, ๊ฐ€๋กœ, ๋†’์ด) ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ 3์ฐจ์› ์„ธ๊ณ„์—์„œ ์ž์œ ๋กญ๊ฒŒ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 18111๋ฒˆ ๋ฌธ์ œ - ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ import sys input = sys.stdin.readline n, m, b = map(int, input().split()) # ์„ธ๋กœ, ๊ฐ€๋กœ, ๋ธ”๋ก ๊ฐœ์ˆ˜ graph = [] graph.append(list(map(int, input().split())) for _ in range(m)) answer = int(1e9) g_level =..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 11000๋ฒˆ_๊ฐ•์˜์‹ค ๋ฐฐ์ •

๋ฌธ์ œ https://www.acmicpc.net/problem/11000 11000๋ฒˆ: ๊ฐ•์˜์‹ค ๋ฐฐ์ • ์ฒซ ๋ฒˆ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 200,000) ์ดํ›„ N๊ฐœ์˜ ์ค„์— Si, Ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 11000๋ฒˆ ๋ฌธ์ œ - ๊ฐ•์˜์‹ค ๋ฐฐ์ • import sys import heapq input = sys.stdin.readline if __name__ == "__main__": n = int(input()) schedule_list = [list(map(int, input().split())) for _ in range(n)] schedule_list.sort() room_queue = list() heapq.heappush(r..