๐ฑ Algorithm(53)
-
๋ฐฑ์ค 1662 ์์ถ ํ์ด์ฌ
1662๋ฒ: ์์ถ ์์ถ๋์ง ์์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์ค ์ด๋ค ๋ถ๋ถ ๋ฌธ์์ด์ K(Q)์ ๊ฐ์ด ์์ถ ํ ์ ์๋ค. K๋ ํ์๋ฆฌ ์ ์์ด๊ณ , Q๋ 0์๋ฆฌ ์ด์์ ๋ฌธ์์ด์ด๋ค. ์ด Q๋ผ๋ ๋ฌธ์์ด์ด K๋ฒ ๋ฐ๋ณต๋๋ค๋ ๋ป์ด www.acmicpc.net ๋ด๊ฐ ์ง ์ฝ๋ (๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ) string = list(input()) input_stack = [] output_stack = [] for s in string: if s == ")": iter_num = -1 while 1: input_top = input_stack.pop() if input_top != "(": output_stack.append(input_top) else: iter_num = input_stack.pop() break input_..
2023.03.01 -
๋ฐฑ์ค 2002 ์ถ์ ํ์ด์ฌ
2002๋ฒ: ์ถ์ ์ ๋ ฅ์ ์ด 2N+1๊ฐ์ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฒซ ์ค์๋ ์ฐจ์ ๋์ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๋๊ทผ์ด๊ฐ ์ ์ ์ฐจ๋ ๋ฒํธ ๋ชฉ๋ก์ด ์ฃผ์ด์ง๊ณ , N+2์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์์์ด www.acmicpc.net ์ ์ด์งํ ๋ฌธ์ ์ง๋ง ํ์ด ๋ฐฉ๋ฒ์ด ๋ง์์ ๋ค์ง ์์์ ๋ค๋ฅธ ๋ถ๋ค ์ฝ๋๋ ๋น๊ตํด๋ดค๋ค. ๋ด๊ฐ ํผ ์ฝ๋ deque ์ ์ฌ์ฉํ๋ค. ๋ฌธ์ ์์ ์ํ๋ ๊ฒ์ ์ถ์ํ ์ฐจ์ ์๋ฅผ ๊ตฌํ๋ ๊ฒ. ์ฆ first in first out ์ ์๋ฐฐํ ๊ฒฝ์ฐ๋ฅผ ์นด์ดํธ ํ๋ ๊ฒ์ด๋ค. q1 ์ด๋ deque() ์ ํฐ๋์ ๋ค์ด๊ฐ ์์๋๋ก ์์๋ฅผ ๋ด๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐจ๋ก๋๋ก ํฐ๋์ ๋น ์ ธ๋์ค๋ ์์(out) ๊ฐ q1 ์ ์ฒซ๋ฒ์งธ์ ์ผ์นํ์ง ์๋ค๋ฉด, ํด๋น ์์๋ ์ถ์ํ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ ์ ์๋ค...
2023.03.01 -
๋ฐฑ์ค 14225 ๋ถ๋ถ์์ด์ ํฉ ํ์ด์ฌ
14225๋ฒ: ๋ถ๋ถ์์ด์ ํฉ ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์์ด S์ ๋ถ๋ถ ์์ด์ ํฉ์ผ๋ก ๋์ฌ ์ ์๋ ๊ฐ์ฅ ์์ ์์ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, S = [5, 1, 2]์ธ ๊ฒฝ์ฐ์ 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)์ ๋ง๋ค www.acmicpc.net ์ฒ์ ํผ ์ฝ๋ from itertools import combinations N = int(input()) arr = list(map(int, input().split())) max_value = sum(arr) num_set = set() for n in range(1, N+1): for c in combinations(arr, n): num_set.add(sum(c)) i = 1 while T..
2023.02.25 -
๋ฐฑ์ค 2470 ๋ ์ฉ์ก ํ์ด์ฌ
2470๋ฒ: ๋ ์ฉ์ก ์ฒซ์งธ ์ค์๋ ์ ์ฒด ์ฉ์ก์ ์ N์ด ์ ๋ ฅ๋๋ค. N์ 2 ์ด์ 100,000 ์ดํ์ด๋ค. ๋์งธ ์ค์๋ ์ฉ์ก์ ํน์ฑ๊ฐ์ ๋ํ๋ด๋ N๊ฐ์ ์ ์๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ด ์๋ค์ ๋ชจ๋ -1,000,000,000 ์ด์ 1,000,00 www.acmicpc.net โญ๏ธ ์ฌ๊ณ ๊ณผ์ ์๋ก ๋ค๋ฅธ 2๊ฐ์ ์ฉ์ก -> ์ ํฌ์ธํธ๋ 2๊ฐ numbers ์ ์ต๋ ๊ธธ์ด๋ 10๋ง -> ์ฆ ์กฐํฉ์ ์๊ฐ์ด๊ณผ ๋ ์๋ฅผ ๋ํ์ ๋ ๊ฐ์ฅ 0์ ๊ฐ๊น๊ฒ. ํฌ๊ฑด ์๊ฑด ์๊ด์์ด ๋ ์์ ํฉ์ด 0์ ๊ฐ๊น์ฐ๋ฉด ๋๋ค. ๋ธ๋ฃจํธํฌ์ค ์๋ผ ๐ solved point ์ ๋ ฌํ ๋ ์ ๋๊ฐ์ด ์์ ์์๋๋ก ์ ๋ ฌํด์ผํ๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์๋ก ์ฐจ์ด๊ฐ ๋น์ทํ ๊ฒ๋ผ๋ฆฌ ๋ชจ์. ์ด๋ป๊ฒ ์ ๋๊ฐ์ด ์์ ์์๋๋ก ์ ์ฅํ ์ ์๋๋ฐ? -> lambda bab..
2023.01.29 -
๋ฐฑ์ค 1374 ๊ฐ์์ค ํ์ด์ฌ (damn pythonic)
์ ํ์ ์ธ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค 1374๋ฒ: ๊ฐ์์ค ์ฒซ์งธ ์ค์ ๊ฐ์์ ๊ฐ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์ค๋ง๋ค ์ธ ๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์์๋๋ก ๊ฐ์ ๋ฒํธ, ๊ฐ์ ์์ ์๊ฐ, ๊ฐ์ ์ข ๋ฃ ์๊ฐ์ ์๋ฏธํ๋ค. ๊ฐ์ www.acmicpc.net โญ๏ธ ํ์ด ๋ค๋ฅธ ๋ถ๋ค ํ์ด ๋ณด๋๊น heapq ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ๋๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ค. 1. ๊ฐ์ฅ ๋จผ์ ์์ํ๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ ์น๋ค. 2. ์ฐจ๋ก๋๋ก ๋ฆฌ์คํธ์ ์ ์ฅํ๋, ๋๋๋ ์๊ฐ๋ง ์ ์ฅํ๋ค. 3. ๊ฐ์๋ฅผ ์ฐจ๋ก๋ก ์ํ -> ๋ฆฌ์คํธ์ ์ ์ฅ๋ ์๋ณด๋ค ๊ฐ์ ์์ ์๊ฐ์ด ๋ ํฌ๋ค๋ฉด, ์ ์ฅ๋ ์ธ๋ฑ์ค์ ๋๋๋ ์๊ฐ์ ์ ์ฅํ๋ค. (์ด์ ๊ฐ์ ๋๋๋ ์๊ฐ < ๋ค์ ๊ฐ์ ์์์๊ฐ : ๊ฐ์์ค ์ฌ์ฉ ๊ฐ๋ฅ) ๊ฐ์์ค ๊ต์ฒด๊ฐ ํ์ํ ๋ de..
2023.01.27 -
๋ฐฑ์ค 12845 ๋ชจ๋์ ๋ง๋ธ ํ์ด์ฌ
12845๋ฒ: ๋ชจ๋์ ๋ง๋ธ ์๊ด์ด๋ ๊ฒ์์ ์ข์ํ๋ค. ๋ณ์๋ณ ๊ฒ์์ ๋ค ํ์ง๋ง ๊ทธ ์ค์์ ์ ์ผ ์ข์ํ๋ ๊ฒ์์ ๋ชจ๋์ ๋ง๋ธ์ด๋ค. ์ด๊น์์ด ์ค๋๋ ์๊ด์ด๋ ํ๊ต ๊ฐ๋ ๋ฒ์ค์์ ์บ๋ฆญํฐ ํฉ์ฑ ์ด๋ฒคํธ๋ฅผ ์ฐธ์ฌํ๋ค. ์ด๋ฒ ์ด www.acmicpc.net ํฌ์ธํธ ์ฌ๋ฌ ์ผ์ด์ค๋ฅผ ๋ง๋ค์ด ์๋ํ๋ค๋ณด๋ฉด ๊ฒฐ๊ตญ ๊ฐ์ฅ ํฐ ์นด๋๋ฅผ ์ค์ฌ์ผ๋ก ํฉ์ฑ์ ์์ํด์ผ ํจ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์ค์ํ ํฌ์ธํธ๋, ๊ฒฐ๊ตญ ๊ฐ์ฅ ํฐ (์ซ์) ์นด๋๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์นด๋์ ํฉ์ฑ ๋๋ค๋ ๊ฒ. ๋ฌธ์ ์์๋ ์ธ์ ํ ์นด๋๋ผ๋ฆฌ ํฉ์ฑํ๋ค๊ณ ๋ผ ์์ด, ์นด๋์ ์์๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋๋ค๊ณ ์๊ฐํ ์ ์๋ค. ํ์ง๋ง ์ซ์๊ฐ ๊ฐ์ฅ ํฐ ์นด๋๋ฅผ ์ค์ฌ์ผ๋ก ๋ชจ๋ ์นด๋๊ฐ ํฉ์ฑ๋๊ธฐ์ ๋จ์ํ ์ ๋ ฌ์์ผ๋ ๋ฌด๋ฐฉํ๋ค. ์ ๋ ฌํ์ ๋ชจ๋ ๊ฒ ์์ํด์ง๋ค. ์ฝ๋ N = int(input()) cards =..
2023.01.20 -
๋ฐฑ์ค 1455 ๋ค์ง๊ธฐ ํ์ด์ฌ
1455๋ฒ: ๋ค์ง๊ธฐ II ์ธ์ค์ด๋ ๋์ ๋ค์ง๊ธฐ๋ฅผ ํ๋ ค๊ณ ํ๋ค. ์ธ์ค์ด๋ ๋์ ์ N×M๊ฐ ๊ฐ์ง๊ณ ์๋ค. ๋์ ์ ์ธ๋ก๋ก N๊ฐ, ๊ฐ๋ก๋ก M๊ฐ ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ ์ฐจ๊ณก์ฐจ๊ณก ๋์ฌ์ ธ ์๋ค. ๋์ ์ ์๋ฉด์ 0์ด๋ผ๊ณ ํ๊ณ ๋ท๋ฉด์ 1์ด๋ผ๊ณ www.acmicpc.net board = [list(map(int, list(input()))) for _ in range(N)] def flip(R, C): for r in range(R + 1): for c in range(C + 1): # ๋ฐฉ๋ฒ 1 board[r][c] = 0 if board[r][c] else 1 # ๋ฐฉ๋ฒ 2 board[r][c] ^= 1 # ๋ฐฉ๋ฒ 1, 2 ์ค ํ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํด์ ์ฌ์ฉ count = 0 for n in range(N - 1, -1, -1): f..
2023.01.11 -
๋ฐฑ์ค 1527 ๊ธ๋ฏผ์์ ๊ฐ์ ํ์ด์ฌ
https://www.acmicpc.net/problem/1527 1527๋ฒ: ๊ธ๋ฏผ์์ ๊ฐ์ ์ฒซ์งธ ์ค์ A์ B๊ฐ ์ฃผ์ด์ง๋ค. A๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. B๋ A๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. www.acmicpc.net ๋ธ๋ฃจํธ ํฌ์ค ๋์๊ฐ ์ด์ด ๋๊ธธ๋ permutation ์ผ๋ก ์ฒจ์ ์ ๊ทผํ๋ค. ์ด์ผ ์ ๊ทผํ๋๋ฉด, ์ ๋ ฅ๋ ์์ ๊ธธ์ด ๋งํฐ [4] ์ [7] ๋ฐฐ์ด์ ๋๋ฆผ. ๋๋ฆฐ [4] , [7] ๋ฐฐ์ด์ ํฉ์นจ. -> [4] * len(์ธํ๊ฐ) + [7] * len(์ธํ๊ฐ) ํฉ์ณ์ง ๋ฐฐ์ด์ permutations ์ ๋ฃ๊ณ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํจ. ๋น์ฐํ ์๊ฐ ์ด๊ณผ๋จ... ๋ถํ์ํ๊ฒ 4 ์ 7 ๋ฐฐ์ด์ ๋๋ ค๋์๊ฒ ์๊ฐ์ด๊ณผ์ ์์ธ์ด์..
2022.12.30 -
๋ฐฑ์ค 2210 ์ซ์ํ๊ด๋ฆฌ ํ์ด์ฌ
2210๋ฒ: ์ซ์ํ ์ ํ 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ค์ด๋ค. www.acmicpc.net dfs ํผ ๋ฏธ์ณค๋ค result = set() dx = [1, -1, 0, 0] dy = [0, 0, 1, -1] res = [list(map(str, input().split())) for _ in range(5)] def dfs(r_, c_, tmp): if len(tmp) == 6: result.add(tmp) return for i in range(4): nx = c_ + dx[i] ny = r_ + dy[i] i..
2022.12.29