๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€ 227

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 9251๋ฒˆ_LCS

๋ฌธ์ œ https://www.acmicpc.net/problem/9251 9251๋ฒˆ: LCS LCS(Longest Common Subsequence, ์ตœ์žฅ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด)๋ฌธ์ œ๋Š” ๋‘ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชจ๋‘์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์ด ๋˜๋Š” ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ACAYKP์™€ CAPCAK์˜ LCS๋Š” ACAK๊ฐ€ ๋œ๋‹ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 9251๋ฒˆ ๋ฌธ์ œ - LCS str1 = ' ' + input() str2 = ' ' + input() dp = [[0]*len(str1) for _ in range(len(str2))] for i in range(1, len(str2)): for j in range(1, len(str1)): if str2[i] == str1[j]: ..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 1011๋ฒˆ_Fly me to the Alpha Centauri

๋ฌธ์ œ https://www.acmicpc.net/problem/1011 1011๋ฒˆ: Fly me to the Alpha Centauri ์šฐํ˜„์ด๋Š” ์–ด๋ฆฐ ์‹œ์ ˆ, ์ง€๊ตฌ ์™ธ์˜ ๋‹ค๋ฅธ ํ–‰์„ฑ์—์„œ๋„ ์ธ๋ฅ˜๋“ค์ด ์‚ด์•„๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜๊ฐ€ ์˜ค๋ฆฌ๋ผ ๋ฏฟ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฐ€ ์ง€๊ตฌ๋ผ๋Š” ์„ธ์ƒ์— ๋ฐœ์„ ๋‚ด๋ ค ๋†“์€ ์ง€ 23๋…„์ด ์ง€๋‚œ ์ง€๊ธˆ, ์„ธ๊ณ„ ์ตœ์—ฐ์†Œ ASNA ์šฐ์ฃผ ๋น„ํ–‰ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1011๋ฒˆ ๋ฌธ์ œ - Fly me to the Alpha Centauri t = int(input()) for _ in range(t): x, y = map(int, input().split()) distance = y - x cnt = 0 move = 1 move_plus = 0 # ์ด๋™ํ•œ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ while move_plus < ..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 2447๋ฒˆ_๋ณ„ ์ฐ๊ธฐ - 10

๋ฌธ์ œ https://www.acmicpc.net/problem/2447 2447๋ฒˆ: ๋ณ„ ์ฐ๊ธฐ - 10 ์žฌ๊ท€์ ์ธ ํŒจํ„ด์œผ๋กœ ๋ณ„์„ ์ฐ์–ด ๋ณด์ž. N์ด 3์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ(3, 9, 27, ...)์ด๋ผ๊ณ  ํ•  ๋•Œ, ํฌ๊ธฐ N์˜ ํŒจํ„ด์€ N×N ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์ด๋‹ค. ํฌ๊ธฐ 3์˜ ํŒจํ„ด์€ ๊ฐ€์šด๋ฐ์— ๊ณต๋ฐฑ์ด ์žˆ๊ณ , ๊ฐ€์šด๋ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์นธ์— ๋ณ„์ด www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 2447๋ฒˆ ๋ฌธ์ œ - ๋ณ„ ์ฐ๊ธฐ 10 n = int(input()) def star(l): if l == 3: return ['***','* *','***'] arr = star(l//3) stars = [] for i in arr: stars.append(i*3) for i in arr: stars.append(i+' '*(l//3)+i) for i i..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 7662๋ฒˆ_์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ

๋ฌธ์ œ https://www.acmicpc.net/problem/7662 7662๋ฒˆ: ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ์ฒซ์งธ ์ค„์—๋Š” Q์— ์  www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 7662๋ฒˆ ๋ฌธ์ œ - ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ import sys import heapq input = sys.stdin.readline test = int(input()) for _ in range(test): max_heap, min_heap = [], [] visit = [0] * 1_000_001 n = int(input()) for i in range(n): cmd = in..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold3] 1520๋ฒˆ_๋‚ด๋ฆฌ๋ง‰ ๊ธธ

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

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver1] 1991๋ฒˆ_ํŠธ๋ฆฌ ์ˆœํšŒ

๋ฌธ์ œ https://www.acmicpc.net/problem/1991 1991๋ฒˆ: ํŠธ๋ฆฌ ์ˆœํšŒ ์ฒซ์งธ ์ค„์—๋Š” ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 26)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ๋…ธ๋“œ์™€ ๊ทธ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋…ธ๋“œ์˜ ์ด๋ฆ„์€ A๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์•ŒํŒŒ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 1991๋ฒˆ - ํŠธ๋ฆฌ ์ˆœํšŒ n = int(input()) tree = {} for _ in range(n): root, left, right = input().split() tree[root] = [left, right] def preorder(root): if root != '.': print(root, end='') preorder(tree[root][0]) # l..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Silver3] 15654๋ฒˆ_N๊ณผM(5)

๋ฌธ์ œ https://www.acmicpc.net/problem/15654 15654๋ฒˆ: N๊ณผ M (5) N๊ฐœ์˜ ์ž์—ฐ์ˆ˜์™€ ์ž์—ฐ์ˆ˜ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋Š” ๋ชจ๋‘ ๋‹ค๋ฅธ ์ˆ˜์ด๋‹ค. N๊ฐœ์˜ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 15654๋ฒˆ ๋ฌธ์ œ - N๊ณผ M(5) from itertools import permutations n, m = map(int, input().split()) new_list = list(map(int, input().split())) new_list = sorted(new_list) #์ˆœ์„œ๋Œ€๋กœ ๋‚˜์˜ค๊ฒŒ ์ •๋ ฌ ๋จผ์ € for numbers in list(permutations..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold3] 2206๋ฒˆ_๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ

๋ฌธ์ œ https://www.acmicpc.net/problem/2206 2206๋ฒˆ: ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ N×M์˜ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„๋˜๋Š” ๋งต์ด ์žˆ๋‹ค. ๋งต์—์„œ 0์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 1์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๋ฒฝ์ด ์žˆ๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹น์‹ ์€ (1, 1)์—์„œ (N, M)์˜ ์œ„์น˜๊นŒ์ง€ ์ด๋™ํ•˜๋ ค ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 2206๋ฒˆ ๋ฌธ์ œ - ๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™ํ•˜๊ธฐ from collections import deque n, m = map(int, input().split()) graph = [] for _ in range(n): graph.append(list(map(int, input()))) dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] def bfs..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 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 ํ’€์ด # ๋ฐฑ์ค€ 1753๋ฒˆ ๋ฌธ์ œ - ์ตœ๋‹จ๊ฒฝ๋กœ import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) import heapq n, m = map(int, input().split()) k = int(input()) INF = int(1e9) graph = [[] * (n+1) for _ in r..

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold4] 9663๋ฒˆ_N-Queen

๋ฌธ์ œ https://www.acmicpc.net/problem/9663 9663๋ฒˆ: N-Queen N-Queen ๋ฌธ์ œ๋Š” ํฌ๊ธฐ๊ฐ€ N × N์ธ ์ฒด์ŠคํŒ ์œ„์— ํ€ธ N๊ฐœ๋ฅผ ์„œ๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋†“๋Š” ๋ฌธ์ œ์ด๋‹ค. N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํ€ธ์„ ๋†“๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 9663๋ฒˆ ๋ฌธ์ œ - N-Queen import sys input = sys.stdin.readline n = int(input().rstrip()) answer = 0 row = [0] * n def is_promising(x): for i in range(x): if row[x] == row[i] or abs(row[x]-row[i]) == abs(x-i): return False retur..