๐ฑ Algorithm/Greedy(7)
-
๋ฐฑ์ค 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 -
๋ฐฑ์ค ๋ฌผ๋ณ 1052๋ฒ ํ์ด์ฌ
1052๋ฒ: ๋ฌผ๋ณ ์ง๋ฏผ์ด๋ N๊ฐ์ ๋ฌผ๋ณ์ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ ๋ฌผ๋ณ์๋ ๋ฌผ์ ๋ฌดํ๋๋ก ๋ถ์ ์ ์๋ค. ์ฒ์์ ๋ชจ๋ ๋ฌผ๋ณ์๋ ๋ฌผ์ด 1๋ฆฌํฐ์ฉ ๋ค์ด์๋ค. ์ง๋ฏผ์ด๋ ์ด ๋ฌผ๋ณ์ ๋ ๋ค๋ฅธ ์ฅ์๋ก ์ฎ๊ธฐ๋ ค๊ณ ํ๋ค. ์ง๋ฏผ์ด๋ ํ ๋ฒ www.acmicpc.net ์ ๊ทผ ์ด์ง๋ฒ์ผ๋ก ์ ๊ทผํด์ผ ํ๋ค. ์ฝ๋ ์ ๋ ฅ๋ฐ์ ์ซ์ N์ bin() ๋ฉ์๋๋ก ์ด์ง์๋ก ๋ณํํ๊ณ 1์ ๊ฐ์๋ฅผ ๊ตฌํ๋ค. ์ด 1์ ๊ฐ์๊ฐ ํด๋น ์ซ์ N ์์ ๋ง๋ค ์ ์๋ ๋ฌผ๋ณ์ ๊ฐฏ์๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด N ์ด 3์ด๋ผ๋ฉด, ์ธ ๊ฐ์ ๋ฌผ๋ณ์์ ๋ฌธ์ ์ ์กฐ๊ฑด๋๋ก ๋ง๋ค ์ ์๋ ๋ฌผ๋ณ์ ๊ฐ์๋ 2๊ฐ๊ฐ ๋๋ค. ๊ทธ๋์ while bin(N).count('1') > K: ์ด๋ผ๋ ์กฐ๊ฑด์์ ๋ง๋ค ์ ์๋ค. ์ฐ๋ฆฌ๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ๋ฌผ๋ณ์ ๊ฐ์๋ K ๋ฅผ ๋์ง ์์์ผ ํ๋๊น. # 1. ์ผ์ผ์ด ๋ค ๋..
2022.07.18 -
๋ฐฑ์ค 1213 ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ ํ์ด์ฌ
https://www.acmicpc.net/problem/1213
2022.07.05 -
๋ฐฑ์ค 1931 ํ์ด์ฌ
1931๋ฒ: ํ์์ค ๋ฐฐ์ (1,4), (5,7), (8,11), (12,14) ๋ฅผ ์ด์ฉํ ์ ์๋ค. www.acmicpc.net ์ ๋ต ์ฝ๋ from sys import stdin import heapq read = stdin.readline N = int(read()) heap = [] result = [] for _ in range(N): a, b = map(int, read().split()) result.append((a, b)) result = sorted(result, key=lambda x: x[0]) result = sorted(result, key=lambda x: x[1]) count, last = 0, 0 for start, end in result: if start >= last: c..
2022.01.05 -
๋ฐฑ์ค 11000 ํ์ด์ฌ
11000๋ฒ: ๊ฐ์์ค ๋ฐฐ์ ์ฒซ ๋ฒ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200,000) ์ดํ N๊ฐ์ ์ค์ Si, Ti๊ฐ ์ฃผ์ด์ง๋ค. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net ์ ๋ต ์ฝ๋ from sys import stdin import heapq read = stdin.readline N = int(read()) heap = [] result = [] for _ in range(N): a, b = map(int, read().split()) result.append((a, b)) result.sort() # time ์ ๋ ฌ์ํ heapq.heappush(heap, result[0][1]) # ์ฒซ๋ฒ์งธ ์์ ๋๋๋ ์๊ฐ๋ถํฐ ๋ค์ด๊ฐ ์๋ค. for i in range(1, N): if he..
2022.01.04