๐ Algorithm/Python
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์งํ ์ด๋
๋ฌธ์ programmers.co.kr/learn/courses/30/lessons/62050 ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์งํ ์ด๋ [[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18 programmers.co.kr ๊ณ์ ํ๋ ค์ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ํผ ๋ฌธ์ ์ด๋ค. ์ด๋ป๊ฒ ์ด๋ฐ์๊ฐ์ ๋ ์ฌ๋ฆฌ์ง...? heap์ ์ฌ์ฉํด์ ํ์๋ค. ์,ํ,์ข,์ฐ ์นธ ์ค์ ๋ฐฉ๋ฌธํ์ง ์์ ์นธ๊ณผ์ ๊ธธ์ด๊ฐ height๋ณด๋ค ํฌ๋ค๋ฉด heap์ ์ฐจ์ด์ ์ ์ ๊ธฐ๋กํ๋ค. height๋ณด๋ค ์๋ค๋ฉด 0๊ณผ ์ ์ ๊ธฐ๋กํ๋ค. ์ด๋ฅผ ์ด์ฉํด์ min heap์ผ๋ก..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ํฉ์น ํ์ ์๊ธ
๋ฌธ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ์๋ ๋งํฌ ์ฐธ์กฐ programmers.co.kr/learn/courses/30/lessons/72413 ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํฉ์น ํ์ ์๊ธ 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr Dijkstra ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ํ์๋ค. (์ต๋จ๊ฑฐ๋ฆฌ..
[Python] ๋ฐฑ์ค 7453
์ธ์ ๋ณต์กํ๊ณ ๊น๋ค๋ก์ ๋ค.. ์ด๊ฒ ์ ๊ฒ ์๋ํด๋ณด์๋๋ฐ 12์ด๋ ์ฃผ์ด์ง ์๊ฐ์ด ์๊พธ ์ด๊ณผ๋ผ์ ์ดํ์ด๋ ๊ฑธ๋ฆฐ ๋ฌธ์ ,, ๋น์ทํ ์ ํ์ ๋ฌธ์ ๊ฐ ๋ง๋ค. ๋ฐฑ์ค 1208๋ฒ ๋ฌธ์ ๋ ๊ฐ์ ์ ํ์ด๋ฏ๋ก ์ ํ์ ๋ํ ์ค๋ช ์ ์๋ ๋งํฌ์์ ์ฐธ์กฐ ๐https://990427.tistory.com/48 [Python] ๋ฐฑ์ค 1208 ๊ตฌ๊ธ๋ง์ด ์ ์๋ผ์...์ง์ ์ฐ๋ ๋ฆฌ๋ทฐ ๐ 1182๋ฒ ๋ถ๋ถ์์ด์ ํฉ๊ณผ ๊ฐ์ ์ ํ์ ๋ฌธ์ ์ด์ง๋ง ๋ฒ์์ ์๊ฐ์ ํ ๋ฑ์ผ๋ก ๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ์ ์ ์ฉํด์ผํ๋ค. n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ์์ด์ ๋ถ๋ถ ์์ด์ ๊ตฌํ 990427.tistory.com ์ฐ์ 1208๋ฒ๊ณผ ๊ฐ์ด ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์๋๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. ์ด์ ๋ ์ ๋ง ๋ชจ๋ฅด๊ฒ ๋ค... ๋์ ๋๋ฆฌ์ ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด๊ธด ํ์ง๋ง ์จ์ด์๋ ์์๊ฐ ๋งค์ฐ ํฌ๋ค๊ณ ํ..
[Python] ๋ฐฑ์ค 1208
๊ตฌ๊ธ๋ง์ด ์ ์๋ผ์...์ง์ ์ฐ๋ ๋ฆฌ๋ทฐ ๐ 1182๋ฒ ๋ถ๋ถ์์ด์ ํฉ๊ณผ ๊ฐ์ ์ ํ์ ๋ฌธ์ ์ด์ง๋ง ๋ฒ์์ ์๊ฐ์ ํ ๋ฑ์ผ๋ก ๋ค๋ฅธ ํ์ด ๋ฐฉ๋ฒ์ ์ ์ฉํด์ผํ๋ค. n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ์์ด์ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ 2**n ์ด๋ผ๊ณ ํ๋ค. ์ด ๋ฌธ์ ์ ์ต๋ ๋ฒ์๋ n==40์ด๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ 2**40์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ๋๋ค. ๊ทธ๋์ ์ด ๋ฌธ์ ๋ ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ผ๋ก ๋๋ ๋ฐ์ ํด๋นํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ ๊ฒ์ด๋ค. ๊ทธ๋ผ ์ต์ ์ ๊ฒฝ์ฐ (2**20)*2์ด๋ค. (2**20)*2 = 2097152 VS 2**40 = 1099511627776 ํจ์จ ใ ใ ? ๋๋ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ค. (์ด์ ๋ ๋ค์) key : ๋ถ๋ถ ์์ด์ ํฉ value : ํด๋น ๋ถ๋ถ ์์ด์ ํฉ์ด ๋์จ ํ์ ์์ ๋ฅผ ์๋ก ๋ค์ด ์ฝ๋ ์ค๋ช ์ ํ์๋ฉด ์ฐ์ l=[..
[Python] ๋ฐฑ์ค 1167, 1967
์ ๋ ฅ๊ฐ์ ์ฐจ์ด ์ธ์๋ ๋๊ฐ์ ๋ฌธ์ ์ด๋ค. ๋จผ์ ํธ๋ฆฌ์ ์ง๋ฆ์ ์ฐพ๋๋ฐ์๋ rule์ด ์๋ค. โ ํธ๋ฆฌ์์ ์์์ ๋ ธ๋(A)๋ฅผ ์ ํํด ๊ฐ์ฅ ๋จผ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. -> B โ B์์ ๊ฐ์ฅ ๋จผ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. -> C โ ๊ทธ๋ฌ๋ฉด B์ C์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋ฉ๋ค. (==์ง๋ฆ) ์ด ๊ท์น์ ์๋ฉด ์ฝ๊ฒ ์ฝ๊ฒ ํ ์ ์๊ฒ ๋ค. ๋ชจ๋ฅด๋ฉด ใ ใ ์ฝ์ง ํ๋๊น ์๊ณ ์์... Answer 1167 import sys from collections import defaultdict from collections import deque n=int(sys.stdin.readline()) dic=defaultdict(list) for i in range(n): l=list(map(int,sys.stdin.readline().split())) a..
[Python] ๋ฐฑ์ค 10917
์ด๋ ค์ ๋ ๋ฌธ์ ๋ ์ค์ค๋ก ์๋ธํด๋ ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ ๋น๊ตํ๊ธฐ ์ํด์ ๊ฒ์์ ํด๋ณด๋๋ฐ ํผ ์ฌ๋์ด ๋ณ๋ก ์์ด์ ๊ฒ์ํด๋ ์๋์์ ์ฌํ๋น... ๋ด ๋ต์ด ์ต์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ ์ผ๋จ ํ์๊ณ ํผ ์ฌ๋์ด ๋ณ๋ก ์์ด์ ๋๋ผ๋ ๋ฆฌ๋ทฐ๋ฅผ ์จ๋์ผ์ง,,๐ ์ผ๋จ ๋๋ BFS + ์ฐ์ ์์Q๋ก ํ์๋ค. ๋์ ๋๋ฆฌ๋ฅผ ๋ง๋ค๊ณ x๋ฅผ key๋ก y๋ฅผ value๋ก ๋๊ณ , value๋ ์ฐ์ ์์Q ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅํ๋ค. (๊ฟ์ ๋ ํฐ ์๋ก ์ด๋ํ๊ณ N์ด ๊ฐ์ฅ ํฌ๊ธฐ ๋๋ฌธ์ N์ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋ฐ๋ก ๊ทธ๋ง ํ ์ ์๊ฒํ๊ธฐ ์ํจ) ๊ทธ๋ฆฌ๊ณ queue์ ํ์ฌ ์์น์ ํ์ฌ ์ํฉ์ด ๋ฐ๋ ํ์๋ฅผ ์ ์ฅํ๋ฉฐ BFS๋ฅผ ํ๋ค. N์ ๋ง๋๋ฉด ๊ทธ๋งํ๋ค. (bfs๋๊น ์ฒ์๋ง๋ ๋ ์ต์) Result import sys from collections import defaultdi..
[Python] ๋ฐฑ์ค 2089
๋๋ถ์ ํ์ด์ฌ์์ a//b๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ ํํ ์ ์ ์์๋ค. ์ด๋ ๊ฒ ๋์ํ๋ค๊ณ ํ๋ค. import sys n = int(sys.stdin.readline()) if n == 0: print(0) else: res = [] while n != 0: if n%(-2) == 0: res.append('0') n = n//(-2) else: res.append('1') n = n//(-2) +1 print(''.join(reversed(res)))
[Python] ๋ฐฑ์ค 1442
solution์ ๊ฐ๋จํ๊ฒ ๋ฐ์ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ n-k๊ฐ ๋ ๋ง๋ค์ด ์ฃผ๊ณ ๊ทธ ์๋ค๋ก ์ ๋ ฌํ๋ฉด ๋๋ค. ๋จ, ์ ๋ ฌํ ๋ ๋ฌธ์ ์์ ์ค ์์ ์ ๊ฐ์ด 7 3 2 ์ฒ๋ผ ์ฃผ์ด์ง ์ซ์๊ฐ ๊ฐ์ ์๋ฆฌ ์ซ์๋ผ๋ฉด ์๊ด ์์ง๋ง 9 90 990 ๊ณผ ๊ฐ์ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค. ๊ฐ์ฅ ํฐ ์ ๋ถํฐ ์ ๋ ฌํ๋ฉด 990 90 9 ์ด์ง๋ง ์ค์ ๋ก ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ 9 990 90 ์ ๊ฐ์ด ์ ๋ ฌ๋์ด์ผ ํ๋ค. ์์ ์ ํ์๋ ๋ฌธ์ ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค! num.sort(key = lambda x: x*10, reverse=True) num์ ์ซ์๋ค์ type์ด ๋ฌธ์์ด์ด๋ค. ์ด ๋ฌธ์ ์ ์ต๋ ๋ฒ์๊ฐ 1,000,000,000 ์ด๋ฏ๋ก ์ซ์์ ์ต๋๊ธธ์ด๊ฐ 10์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ธธ์ด 10๋งํผ๋ง ๋น๊ตํ๋ฉด ๋๋ค. ์๋ฅผ ๋ค๋ฉด, 20..
[Python] ๋ฐฑ์ค 6549
๊ตํ : ํ๋๋ผ๊ณ ๊ฒ๋จน์ง ๋ง์ stack์ ์ด์ฉํด์ ํ์๋ค stack ์ฝ์ : index์ ๋์ด(h) ์๋ฆฌ : ํ์ฌ index๋ณด๋ค stack์ ์๋ index(๋๋ณด๋ค ์ผ์ชฝ)์ h๊ฐ ๋ ํฌ๋ฉด ํ์ฌ index์ h๊ฐ์ผ๋ก ์ผ์ชฝ๋ ํฌํจํ ์ ์๋ค. ๋๋ณด๊ธฐ ์ฌ๊ธฐ์ ์ค๋ฅธ์ชฝ์ ๋์ด(2) ๋ก ์ผ์ชฝ์ ํฌํจํ์ฌ ๋์ด๊ฐ 4๊ฐ ๋ ์ ์๋ค. ์ด ์๋ฆฌ๋ฅผ ์ด์ฉํด stack์ผ๋ก ํ ์ ์์๋ค! import sys while True: #๋ง์ง๋ง์ stack์ ์๋ ๊ฐ์๋ค ๋ค ๊บผ๋ด๊ธฐ ์ํด ๋ง์ง๋ง h๊ฐ์ 0 h = list(map(int, sys.stdin.readline().split())) + [0] if h[0] == 0: break n = h[0] stack = [(1,h[1])] res = 0 for i in range(2,n..
[Python] ๋ฐฑ์ค 2606
BFS๋๋ DFS๋ฅผ ์ฌ์ฉํ๋ ๊ทธ๋ํ ํ์ ๋ฌธ์ ๋ค. ๋จผ์ , ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ ๋์ ๋๋ฆฌ๋ก ๊ตฌํํ์๋ค. ๋คํธ์ํฌ๋ ์๋ฐฉํฅ ๊ทธ๋ํ ์ด๋ฏ๋ก ์๋ ์ฝ๋์ ๊ฐ์ด ๋์ ๋๋ฆฌ์ ๋ ๋ฒ ์ ๋ ฅํด์ผ ํ๋ค. ๊ทธ๋ํ ๊ตฌํ net = {} for i in range(n): a, b = map(int, input().split()) if a in net : net[a].append(b) else : net[a] = [b] if b in net : net[b].append(a) else : net[b] = [a] ๊ฐ์ ๋คํธ์ํฌ ์์ ์๋ ์ปดํจํฐ๋ฅผ ๊ฒ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ BFS๋ฅผ ์ฌ์ฉํ๋ค. visit์์ 1์ ๋นผ๋ฉด 1๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ์ปดํจํฐ๋ง ๋จ๊ฒ ๋๊ธฐ ๋๋ฌธ์ len(visit)-1์ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅํ๋ค. ์ ์ฒด์ฝ๋ m = int(input())..