๐Ÿ—๏ธ Algorithm 344

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver4] 10825๋ฒˆ_๊ตญ์˜์ˆ˜

๋ฌธ์ œ https://www.acmicpc.net/problem/10825 10825๋ฒˆ: ๊ตญ์˜์ˆ˜ ์ฒซ์งธ ์ค„์— ๋„ํ˜„์ด๋„ค ๋ฐ˜์˜ ํ•™์ƒ์˜ ์ˆ˜ N (1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๊ฐ ํ•™์ƒ์˜ ์ด๋ฆ„, ๊ตญ์–ด, ์˜์–ด, ์ˆ˜ํ•™ ์ ์ˆ˜๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ์ฃผ์–ด์ง„๋‹ค. ์ ์ˆ˜๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1 www.acmicpc.net ํ’€์ด n = int(input()) score_list = [] for i in range(n): [name, kor, eng, math] = map(str, input().split()) score_list.append([name, int(kor), int(eng), int(math)]) sorted_score_list = sorted(score_list, key=la..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold3] 1600๋ฒˆ_๋ง์ด ๋˜๊ณ ํ”ˆ ์›์ˆญ์ด

๋ฌธ์ œ https://www.acmicpc.net/problem/1600 1600๋ฒˆ: ๋ง์ด ๋˜๊ณ ํ”ˆ ์›์ˆญ์ด ์ฒซ์งธ ์ค„์— ์ •์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ๊ฒฉ์žํŒ์˜ ๊ฐ€๋กœ๊ธธ์ด W, ์„ธ๋กœ๊ธธ์ด H๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ ๋‹ค์Œ H์ค„์— ๊ฑธ์ณ W๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, 0์€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ํ‰์ง€, 1์€ ์žฅ์• ๋ฌผ์„ ๋œปํ•œ๋‹ค. ์žฅ์• ๋ฌผ์ด ์žˆ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1600๋ฒˆ ๋ฌธ์ œ - ๋ง์ด ๋˜๊ณ ํ”ˆ ์›์ˆญ์ด from collections import deque import sys input = sys.stdin.readline monkey_dx = [0, 1, 0, -1] monkey_dy = [1, 0, -1, 0] horse_dx = [-2, -1, 1, 2, 2, 1, -1, -2] horse_dy = [1, 2, 2, ..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 17298๋ฒˆ_์˜คํฐ์ˆ˜

๋ฌธ์ œ https://www.acmicpc.net/problem/17298 17298๋ฒˆ: ์˜คํฐ์ˆ˜ ์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์— ์ˆ˜์—ด A์˜ ์›์†Œ A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 17298๋ฒˆ ๋ฌธ์ œ - ์˜คํฐ์ˆ˜ import sys input = sys.stdin.readline n = int(input()) a = list(map(int, input().split())) answer = [-1] * n stack = [] for i in range(n): while stack and a[stack[-1]] < a[i]: answer[stack.pop()] = a[i]..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 2493๋ฒˆ_ํƒ‘

๋ฌธ์ œ https://www.acmicpc.net/problem/2493 2493๋ฒˆ: ํƒ‘ ์ฒซ์งธ ์ค„์— ํƒ‘์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1 ์ด์ƒ 500,000 ์ดํ•˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” N๊ฐœ์˜ ํƒ‘๋“ค์˜ ๋†’์ด๊ฐ€ ์ง์„ ์ƒ์— ๋†“์ธ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์˜ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ํƒ‘๋“ค์˜ ๋†’์ด๋Š” 1 www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 2493๋ฒˆ ๋ฌธ์ œ - ํƒ‘ import sys input = sys.stdin.readline n = int(input()) tops = list(map(int, input().split())) answer = [0] * n stack = [] for i in range(len(tops)): while stack: if tops[stack[-1][0]] < tops[i]: sta..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 5397๋ฒˆ_ํ‚ค๋กœ๊ฑฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/5397 5397๋ฒˆ: ํ‚ค๋กœ๊ฑฐ ์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ•์‚ฐ์ด๊ฐ€ ์ž…๋ ฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ธธ์ด๊ฐ€ L์ธ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ L ≤ 1,000,000) ๊ฐ•์‚ฐ์ด๊ฐ€ ๋ฐฑ์ŠคํŽ˜์ด์Šค๋ฅผ ์ž… www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 5397๋ฒˆ ๋ฌธ์ œ - ํ‚ค๋กœ๊ฑฐ n = int(input()) l = [] for _ in range(n): l.append(list(input())) for i in range(n): stack_l = [] stack_r = [] for cmd in l[i]: if cmd == '': if stack_r: stack_l.append(stack_r.pop()) elif cmd..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 1717๋ฒˆ_์ง‘ํ•ฉ์˜ ํ‘œํ˜„

๋ฌธ์ œ https://www.acmicpc.net/problem/1717 1717๋ฒˆ: ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ ์ดˆ๊ธฐ์— $n+1$๊ฐœ์˜ ์ง‘ํ•ฉ $\{0\}, \{1\}, \{2\}, \dots , \{n\}$์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์— ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ๊ณผ, ๋‘ ์›์†Œ๊ฐ€ ๊ฐ™์€ ์ง‘ํ•ฉ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1717๋ฒˆ ๋ฌธ์ œ - ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ import sys sys.setrecursionlimit(1000000) input = sys.stdin.readline n, m = map(int, input().split()) parent = [i for i in range(n+1)] def find_parent(x): if parent[x] == x:..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 1406๋ฒˆ_์—๋””ํ„ฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/1406 1406๋ฒˆ: ์—๋””ํ„ฐ ์ฒซ์งธ ์ค„์—๋Š” ์ดˆ๊ธฐ์— ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ๋ฌธ์ž์—ด์€ ๊ธธ์ด๊ฐ€ N์ด๊ณ , ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ž…๋ ฅํ•  ๋ช…๋ น์–ด์˜ ๊ฐœ์ˆ˜ www.acmicpc.net ํ’€์ด import sys stack_l = list(input()) stack_r = [] n = int(input()) for i in range(n): command = sys.stdin.readline().split() if command[0] == "L" and stack_l: stack_r.append(stack_l.pop()) elif command[0] == "D" and stac..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 1699๋ฒˆ_์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ

๋ฌธ์ œ https://www.acmicpc.net/problem/1699 1699๋ฒˆ: ์ œ๊ณฑ์ˆ˜์˜ ํ•ฉ ์–ด๋–ค ์ž์—ฐ์ˆ˜ N์€ ๊ทธ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ œ๊ณฑ์ˆ˜๋“ค์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 11=32+12+12(3๊ฐœ ํ•ญ)์ด๋‹ค. ์ด๋Ÿฐ ํ‘œํ˜„๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, 11์˜ ๊ฒฝ์šฐ 11=22+22+12+12+12(5๊ฐœ ํ•ญ)๋„ ๊ฐ€๋Šฅํ•˜๋‹ค www.acmicpc.net ํ’€์ด n = int(input()) dp = [i for i in range (n+1)] for i in range(1, n+1): for j in range(1, i): if (j * j) > i: break if dp[i] > dp[i - j * j] + 1: dp[i] = dp[i - j * j] + 1 print(dp[n])

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 1080๋ฒˆ_ํ–‰๋ ฌ

๋ฌธ์ œ https://www.acmicpc.net/problem/1080 1080๋ฒˆ: ํ–‰๋ ฌ ์ฒซ์งธ ์ค„์— ํ–‰๋ ฌ์˜ ํฌ๊ธฐ N M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ํ–‰๋ ฌ A๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๊ทธ ๋‹ค์Œ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ํ–‰๋ ฌ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1080๋ฒˆ ๋ฌธ์ œ - ํ–‰๋ ฌ def reverse(x, y): for i in range(x, x+3): for j in range(y, y+3): A[i][j] = 1 - A[i][j] def check(): for i in range(N): for j in range(M): if A[i][j] != B[i][j]: return False return True N, M = map(int, in..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver2] 11051๋ฒˆ_์ดํ•ญ ๊ณ„์ˆ˜ 2

๋ฌธ์ œ https://www.acmicpc.net/problem/11051 11051๋ฒˆ: ์ดํ•ญ ๊ณ„์ˆ˜ 2 ์ฒซ์งธ ์ค„์— \(N\)๊ณผ \(K\)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 11051๋ฒˆ ๋ฌธ์ œ - ์ดํ•ญ ๊ณ„์ˆ˜ 2 import sys n, k = map(int, sys.stdin.readline().split()) dp = [[1 for _ in range(k+1)] for _ in range(n+1)] for i in range(1, k+1): for j in range(i+1, n+1): dp[j][i] = (dp[j-1][i-1] + dp[j-1][i]) % 10007 print(dp[n][k])