BOJ(45)
-
[BOJ] #1759 - ์ํธ ๋ง๋ค๊ธฐ
1759๋ฒ: ์ํธ ๋ง๋ค๊ธฐ ์ฒซ์งธ ์ค์ ๋ ์ ์ L, C๊ฐ ์ฃผ์ด์ง๋ค. (3 ≤ L ≤ C ≤ 15) ๋ค์ ์ค์๋ C๊ฐ์ ๋ฌธ์๋ค์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ๋ฌธ์๋ค์ ์ํ๋ฒณ ์๋ฌธ์์ด๋ฉฐ, ์ค๋ณต๋๋ ๊ฒ์ ์๋ค. www.acmicpc.net ** ๋ฌธ์ ์ ํ ๋ฐฑํธ๋ํน ** ํ์ด C๊ฐ์ ๋ฌธ์๋ค์ด ์ฃผ์ด์ก์ ๋, ๊ฐ๋ฅํ L ๊ธธ์ด์ ์ํธ๋ฅผ ๋ชจ๋ ์ฐพ์์ผ ํจ ๋ฐ๋ผ์ C๊ฐ์ ๋ฌธ์๋ค ์ค์์ L๊ฐ๋ฅผ ์ ํํ๋ ๋ชจ๋ ์กฐํฉ์ ๊ณ ๋ ค ํ์ด์ฌ์ ์กฐํฉ(combinations) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ ํด๊ฒฐ ๊ฐ๋ฅ ํน์ DFS๋ฅผ ์ด์ฉํ์ฌ ์กฐํฉ ํจ์ ๊ตฌํ ๊ฐ๋ฅ from itertools import combinations as comb l, c = map(int, input().split()) array = list(input().sp..
2021.06.29 -
[BOJ] #1987 - ์ํ๋ฒณ
1987๋ฒ: ์ํ๋ฒณ ์ธ๋ก R์นธ, ๊ฐ๋ก C์นธ์ผ๋ก ๋ ํ ๋ชจ์์ ๋ณด๋๊ฐ ์๋ค. ๋ณด๋์ ๊ฐ ์นธ์๋ ๋๋ฌธ์ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ ์๊ณ , ์ข์ธก ์๋จ ์นธ (1ํ 1์ด) ์๋ ๋ง์ด ๋์ฌ ์๋ค. ๋ง์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋ค ์นธ ์ค์ ํ ์นธ์ผ www.acmicpc.net ** ๋ฌธ์ ์ ํ ๋ฐฑํธ๋ํน ** ํ์ด ๋ง์ ์, ํ, ์ข, ์ฐ 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ์ด๋ํ ์ ์์ ์ง๊ธ๊น์ง ์ง๋์จ ๋ชจ๋ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ๊ณผ ๋ค๋ฅธ ์ํ๋ฒณ์ด ์ ํ ์นธ์ผ๋ก ์ด๋ํด์ผ ํจ ํ์ ๊ธธ์ด(r)์ ์ด์ ๊ธธ์ด(c)๊ฐ 20 ์ดํ์ด๋ฏ๋ก, ๋ฐฑํธ๋ํน์ ์ด์ฉํ์ฌ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ณ ๋ คํด์ผ ํจ # ์ด๋ ์ขํ (์, ํ, ์ข, ์ฐ) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y): global result # ๋์ผํ ๊ฒฝ์ฐ๋ ํ..
2021.06.29 -
[BOJ] #9663 - N-Queen
9663๋ฒ: N-Queen N-Queen ๋ฌธ์ ๋ ํฌ๊ธฐ๊ฐ N × N์ธ ์ฒด์คํ ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋๋ ๋ฌธ์ ์ด๋ค. N์ด ์ฃผ์ด์ก์ ๋, ํธ์ ๋๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. www.acmicpc.net ** ๋ฌธ์ ์ ํ ๋ฐฑํธ๋ํน ** ํ์ด ๋ํ์ ์ธ ๋ฐฑํธ๋ํน(Backtracking) ๋ฌธ์ N์ ํฌ๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์ ํ์ ๊ฐ๋ฅ N x N ํฌ๊ธฐ์ ์ฒด์ค ๋ณด๋ ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๊ฒ ๋ฐฐ์น์์ผ์ผ ํจ DFS๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์์ ๊ฐ ํ์ ์ฐจ๋ก๋๋ก ํ์ธํ๋ฉด์, ๊ฐ ์ด์ ํธ์ ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํจ ์ด ๋ ์์ชฝ ํ๊ณผ ๋๊ฐ์ ํ์ ๋ชจ๋ ํ์ธํ๋ฉฐ, ํ์ฌ ์์น์ ๋์ ์ ์๋์ง ํ์ธํจ PyPy3๋ก ์ ์ถ # x๋ฒ์งธ ํ์ ๋์ Queen์ ๋ํด์ ๊ฒ์ฆ de..
2021.06.29 -
[BOJ] #1092 - ๋ฐฐ
1092๋ฒ: ๋ฐฐ ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ ๊ฐ ํฌ๋ ์ธ์ ๋ฌด๊ฒ ์ ํ์ด ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ์ ์งธ ์ค์๋ ๋ฐ์ค์ ์ M์ด ์ฃผ์ด์ง๋ค. M์ 10,000๋ณด www.acmicpc.net ** ๋ฌธ์ ์ ํ ๊ทธ๋ฆฌ๋ ** ํ์ด ๋ชจ๋ ๋ฐ์ค๋ฅผ ๋ฐฐ๋ก ์ฎ๊ธฐ๋๋ฐ ๋๋ ์๊ฐ์ ์ต์๊ฐ ๊ณ์ฐ ๋งค ๋ถ๋ง๋ค, ๋ชจ๋ ํฌ๋ ์ธ์ ๋ํ์ฌ ์ฎ๊ธธ ์ ์๋ ๋ฐ์ค๋ฅผ ์ ํํ์ฌ ์ฎ๊ธฐ๋๋ก ํจ ๋ฐ์ค๋ฅผ ๋ฌด๊ฒ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ ๋ค์, ๋ฌด๊ฑฐ์ด ๊ฒ๋ถํฐ ์ฎ๊ธฐ๋๋ก ํจ ์๊ฐ ๋ณต์ก๋ O(NM)์ ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ: ํฌ๋ ์ธ ๊ฐ์ N, ๋ฐ์ค ๊ฐ์ M import sys n = int(input()) cranes = list(map(int, input().split())) m = int(i..
2021.06.25 -
[BOJ] #2012 - ๋ฑ์ ๋งค๊ธฐ๊ธฐ
2012๋ฒ: ๋ฑ์ ๋งค๊ธฐ๊ธฐ ์ฒซ์งธ ์ค์ ์์ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 500,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์ฌ๋์ ์์ ๋ฑ์๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์์ ๋ฑ์๋ 500,000 ์ดํ์ ์์ฐ์์ด๋ค. www.acmicpc.net ** ๋ฌธ์ ์ ํ ๊ทธ๋ฆฌ๋ ** ํ์ด ์์ ๋ฑ์์ ์ค์ ๋ฑ์์ ์ฐจ์ด๋ฅผ ์ต์ํํด์ผ ํจ ๊ทธ ๋ฐฉ๋ฒ์ผ๋ก ์์๋ ๋ฑ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋จ n = int(input()) array = [] # ์์ ๋ฑ์ answer = 0 # ๋ถ๋ง๋์ ํฉ for _ in range(n): array.append(int(input())) array.sort() # ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ์ํ for i in range(1, n + 1): answer += abs(i - array[i - 1]) prin..
2021.06.25 -
[BOJ] #1439 - ๋ค์ง๊ธฐ
1439๋ฒ: ๋ค์ง๊ธฐ ๋ค์์ด๋ 0๊ณผ 1๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฌธ์์ด S๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ด๋ ์ด ๋ฌธ์์ด S์ ์๋ ๋ชจ๋ ์ซ์๋ฅผ ์ ๋ถ ๊ฐ๊ฒ ๋ง๋ค๋ ค๊ณ ํ๋ค. ๋ค์์ด๊ฐ ํ ์ ์๋ ํ๋์ S์์ ์ฐ์๋ ํ๋ ์ด์์ ์ซ์๋ฅผ ์ก๊ณ ๋ชจ www.acmicpc.net ** ๋ฌธ์ ์ ํ ๊ทธ๋ฆฌ๋ ** ํ์ด ๋ฌธ์์ด์ ์๋ ์ซ์๋ฅผ ๋ชจ๋ 0 ๋๋ ๋ชจ๋ 1๋ก ๋ง๋ค์ด์ผ ํจ ๋ฌธ์์ด์ ๊ธธ์ด๋ 100๋ง ์ดํ์ด๋ฏ๋ก, ์๊ฐ ๋ณต์ก๋๋ O(N)์ ํด๊ฒฐํด์ผ ํจ data = input() states = [0] * 2 # states[0-1]: 0-1์ด ์ฐ์์ผ๋ก ์ค๋ ์งํฉ ์ states[int(data[0])] += 1 for i in range(1, len(data)): if data[i] != data[i - 1]: # 0๊ณผ 1์ด ๋ฐ๋ ๋ state..
2021.06.25