๐์๊ณ ๋ฆฌ์ฆ
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 14002๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 4
๋ฌธ์ ํ์ด ์์ด์ ์ต๋ ํฌ๊ธฐ๊ฐ 1000์ด๋ฏ๋ก N2 ์ผ๋ก ํ๋ฉด ๋๋ค. dp ๊ฐ์ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ dp ์์ด๋ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋๋ค. (์๋ ์ฝ๋ ์ฐธ๊ณ ) ์ฝ๋ import sys input = sys.stdin.readline n = int(input()) arr = list(map(int, input().split())) dpMax = [0] * n dpArr = [[] for _ in range(n)] dpArr[0] = [arr[0]] maxIdx = 0 for i in range(1, n): for j in range(i - 1, -1, -1): if arr[i] > arr[j]: if dpMax[j] + 1 > dpMax[i]: dpMax[i] = dpMax[j] + 1 dpArr[i] = dp..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 2263๋ฒ: ํธ๋ฆฌ์ ์ํ
๋ฌธ์ ํ์ด ์ค์ ์ํ : 7 3 8 1 9 4 10 0 11 5 2 6 ํ์ ์ํ : 7 8 3 9 10 4 1 11 5 6 2 0 ํ์ ์ํ๋ ์ต์์ ๋ฃจํธ๋ฅผ ๋งจ ๋ง์ง๋ง์ ๋ฐฉ๋ฌธํ๋ฉฐ, ์ค์ ์ํ๋ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ, ๋ฃจํธ, ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค. ๋ฐ๋ผ์, ํ์ ์ํ์ ๋งจ ๋ง์ง๋ง ์์๋ ์ต์์ ๋ฃจํธ์ด๋ฉฐ ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ์ํ๋ฅผ ๋๋๋ฉด, ์ผ์ชฝ์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ, ์ค๋ฅธ์ชฝ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์์ ์ ์ ์๋ค. ์ค์ ์ํ : 7 3 8 1 9 4 10 0 11 5 2 6 ํ์ ์ํ : 7 8 3 9 10 4 1 11 5 6 2 0 ์ด๋ ์ค์ ์ํ์์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฒ์๋ ์์ ์ธ๋ฑ์ค ~ (์์ ์ธ๋ฑ์ค + ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ ธ๋ ์ - 1) ์ค์ ์ํ์์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ์ ๋ฒ์๋ (๋ ์ธ๋ฑ์ค - ์ค..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 9372๋ฒ: ์๊ทผ์ด์ ์ฌํ
๋ฌธ์ ํ์ด ๋ฌธ์ ์์ ์ฃผ์ด์ง ์ ๋ณด๋ฅผ ์ ํ์ฉํด์ผ ํ๋ค. ์ฃผ์ด์ง๋ ๋นํ ์ค์ผ์ค์ ํญ์ ์ฐ๊ฒฐ ๊ทธ๋ํ๋ฅผ ์ด๋ฃฌ๋ค. ๋ฐ๋ผ์ ์๋ฌด ๋ ธ๋๋ ์ ํํด๋ ๊ทธ ๋ ธ๋์์ ๋ชจ๋ ๋ ธ๋๋ก ๊ฐ ์ ์์์ ์๋ฏธํ๋ค. (์๋ ๊ทธ๋ฆผ ์ฐธ๊ณ ) ๋ํ ์ฐ๊ฒฐ ๊ทธ๋ํ๋ฅผ ์ ์งํ๊ธฐ ์ํ ๊ฐ์ ์ ์ต์ ๊ฐ์๋ (๋ ธ๋์ ์ - 1)์ด๋ค. ์ด๋ฅผ ์ ์ฅ ํธ๋ฆฌ๋ผ ํ๋ค. https://terms.naver.com/entry.naver?docId=837730&cid=42344&categoryId=42344 ์ ์ฅ ํธ๋ฆฌ ์ฐ๊ฒฐ ๊ทธ๋ํ์ ๋ถ๋ถ ๊ทธ๋ํ๋ก์ ๊ทธ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๊ณผ ๊ฐ์ ์ ๋ถ๋ถ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋๋ ํธ๋ฆฌ. ๋ชจ๋ ๋ ธ๋๋ ์ ์ด๋ ํ๋์ ๊ฐ์ ์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํ๋ค. terms.naver.com ์ฆ, ๋นํ๊ธฐ์ ์ข ๋ฅ = ๊ฐ์ ์ ์ฌํ ๊ฐ ๋๋ผ์ ์ = ๋ ธ๋์ ์ ๊ฐ์ ์ ์ต์..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 5639๋ฒ: ์ด์ง ๊ฒ์ ํธ๋ฆฌ
๋ฌธ์ ํ์ด ์ ์ ์ํํ ๊ฒฐ๊ณผ 50 30 24 5 28 45 98 52 60 ์ฒซ ๋ฒ์งธ ์์๊ฐ ๋ฃจํธ ๋ ธ๋ (์ ์ ์ํ์ ์ฑ์ง์ ์ํด) ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ = ๋ฃจํธ ๋ ธ๋๋ณด๋ค ์์ ์์์ธ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ = ๋ฃจํธ ๋ ธ๋๋ณด๋ค ํฐ ์์์ ๊ฒฝ์ฐ ์ ์ ์ํ๋ฅผ ํ์ผ๋ฏ๋ก ๋ฃจํธ ๋ ธ๋๋ณด๋ค ํฐ ์์๊ฐ ๋์ค๋ ์ง์ ์ด ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๋๋๋ ์ง์ ๊ณผ ๊ฐ๋ค. 50 30 24 5 28 45 98 52 60 ์ด๋ก = ๋ฃจํธ ๋ ธ๋, ๋นจ๊ฐ = ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ, ํ๋ = ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ฉํด ํ์ ์ํ๋ฅผ ํด์ฃผ๋ฉด ๋๋ค. ์ฝ๋ import sys sys.setrecursionlimit(10 ** 9) input = sys.stdin.readline pre = [] while True: try: pre.appen..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1417๋ฒ: ๊ตญํ์์ ์ ๊ฑฐ
๋ฌธ์ ํ์ด ๊ธฐํธ 1๋ฒ์ ์ ์ธํ ๋๋จธ์ง ํ๋ฅผ ์ต๋ ํ์ ๋ฃ๋๋ค. ํ์ pop()ํ์ ๋ ๋์จ ํ๋ณด์ ํ๊ฐ ๊ธฐํธ 1๋ฒ์ ํ๋ณด๋ค ๋ง๋ค๋ฉด, ๊ทธ ํ๋ณด๋ฅผ ํ๋ช ๋งค์ํ๊ณ ๋ค์ ํ์ ๋ฃ๋๋ค. ์ ๊ณผ์ ์ ๊ธฐํธ 1๋ฒ์ ํ๊ฐ ์ ์ผ ๋ง์ ๋๊น์ง ๋ฐ๋ณตํ๋ค. ์ฝ๋ import sys, heapq input = sys.stdin.readline n = int(input()) win = int(input()) nums = [] for _ in range(n - 1): num = int(input()) heapq.heappush(nums, (-num, num)) cnt = 0 while nums: num = heapq.heappop(nums)[1] if num >= win: num -= 1 win += 1 cnt += 1 heapq...
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 11779๋ฒ: ์ต์๋น์ฉ ๊ตฌํ๊ธฐ 2
๋ฌธ์ ํ์ด ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋, ์ต๋จ๊ฒฝ๋ก ๊ฐ์ด ๊ฐฑ์ ๋ ๋ ๊ทธ๋์ ๋ ธ๋ ๊ฐ๋ ํจ๊ป ๊ธฐ๋กํ๋ค. ์์ ๋ ธ๋๊ฐ 1๋ฒ ์ผ ๋, 1. ์ด๊ธฐ๊ฐ distance : 1๋ฒ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ก ๊ฐ ์ ์๋ ์ต๋จ ๊ฒฝ๋ก 1 2 3 4 5 6 0 4 2 INF INF INF nearnest ๊ฐ : ๋ฐฉ๋ฌธํ ๋ ธ๋({1}) ์ค์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ธ๋ 1 2 3 4 5 6 1 1 1 1 1 1 2. ๊ฐฑ์ distance : 1๋ฒ ๋ ธ๋์์ n๋ฒ ๋ ธ๋๋ก ๊ฐ๋ ๋น์ฉ๋ณด๋ค 1~3, 3~n์ผ๋ก ๊ฐ๋ ๋น์ฉ์ด ๋ ์์ผ๋ฉด ๊ฐฑ์ 1 2 3 4 5 6 0 4 2 INF 6 (๊ฐฑ์ ) INF nearnest ๊ฐ : ๋ฐฉ๋ฌธํ ๋ ธ๋({1, 3}) ์ค์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ ธ๋ 1 2 3 4 5 6 1 1 1 1 3 (๊ฐฑ์ ) 1 3. 2๋ฒ ๋ฐ๋ณต ๋ฌธ์ ์์ ์ฃผ์ด..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1865๋ฒ: ์ํ
๋ฌธ์ ํ์ด ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ํ๋ฉด ๋๋ค. ๋จ, ์ผ๋ฐ์ ์ธ ๋ฒจ๋ง ํฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ "์์ ๊ฐ์ ์ฌ์ดํด"์ด ์กด์ฌํ๋์ง ์ฌ๋ถ๋ง ๊ตฌํ๋ฉด ๋๋ค. ๋ํ "๋๋ก"๋ ์๋ฐฉํฅ์ด๊ณ "์ํ"์ ๋จ๋ฐฉํฅ์์ ์ฃผ์ํด์ ์ ๋ ฅ๋ฐ์์ผ ํ๋ค. https://www.youtube.com/watch?v=Ppimbaxm8d8&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=13 ์ฝ๋ from sys import stdin input = stdin.readline def bf(): for i in range(n): for j in range(len(edges)): cur, next, cost = edges[j] if dist[next] > dist[cur] + cost: dist[next] = ..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 5014๋ฒ: ์คํํธ๋งํฌ
๋ฌธ์ ํ์ด ์ ํ์ ์ธ ๋๋น์ฐ์ ํ์ ๋ฌธ์ , heap์ ์ด์ฉํด ํ์ด๋ณด์๋ค. ์ฝ๋ from sys import stdin import heapq input = stdin.readline f, s, g, u, d = map(int, input().split()) visited = [False] * (f + 1) q = [(0, s)] visited[s] = True ans = "use the stairs" while q: cnt, now = heapq.heappop(q) if now == g: ans = cnt break if now - d > 0: if not visited[now - d]: visited[now - d] = True heapq.heappush(q, (cnt + 1, now - d)) if n..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 1238๋ฒ: ํํฐ
๋ฌธ์ ํ์ด ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋จ, ํ์๋ค์ด ๋ง์๋ก ๋์๊ฐ๋ ๊ฒฝ์ฐ๋ ๊ตฌํด์ผ ํ๋๋ฐ, ์ด๋์ ๊ฐ์ ์ ์ฃผ์ด์ง ์ ๋ ฅ์ ์์์ ๊ณผ ๋์ ์ ์๋ก ๋ฐ๊พธ๋ฉด ๋๋ค. ์ฝ๋ from sys import stdin import heapq input = stdin.readline n, m, x = map(int, input().split()) toX = [[] for _ in range(n + 1)] #์ง์์ ํํฐ ๋ง์๋ก ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก toHome = [[] for _ in range(n + 1)] #ํํฐ ๋ง์์์ ์ง์ผ๋ก ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก for _ in range(m): a, b, t = map(int, input().split()) toX[a].append((b, t)) toHome[b].append((a..
[Python/ํ์ด์ฌ] ๋ฐฑ์ค 14938๋ฒ: ์๊ฐ๊ทธ๋ผ์ด๋
๋ฌธ์ ํ์ด ๋ค์ต์คํธ๋ผ ๋ฐฉ๋ฒ๊ณผ ํ๋ก์ด๋-์์ฌ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ๋ ธ๋์ ๊ฐ์๊ฐ ์ ์ด์ ํ๋ก์ด๋-์์ฌ ๋ฐฉ๋ฒ์ผ๋ก ํ์๋ค. ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ด๋ฏ๋ก ํ์ด๋ ์๋ตํจ. ์ฝ๋ from sys import stdin input = stdin.readline n, m, r = map(int, input().split()) items = list(map(int, input().split())) graph = [[1e9] * (n + 1) for _ in range(n + 1)] for _ in range(r): a, b, l = map(int, input().split()) graph[a][b] = l graph[b][a] = l for i in range(n + 1): for j in r..