Tags
- queue
- dfs
- ๋ฐฑํธ๋ํน
- ์๋ฎฌ๋ ์ด์
- ๊น์ด ์ฐ์ ํ์
- SpringBoot
- LV2
- ๊ต์ฌ
- ๋ฌธ์์ด
- ์ ๋ ฌ
- BFS
- Brute Force Algorithm
- ๊ทธ๋ํ ํ์
- ๊ตฌํ
- stack
- ๋๋น ์ฐ์ ํ์
- Java
- greedy
- Python
- PGM
- ์ ์๋ก
- DP
- Dynamic Programming
- ์ํ
- ๊ทธ๋ํ ์ด๋ก
- ์๋ฃ๊ตฌ์กฐ
- sort
- BOJ
- CodingTest
- Study
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_2961 : ๋์์ด๊ฐ ๋ง๋ ๋ง์๋ ์์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ฌ๋ฃ ์ ํ์ ๋ฐ๋ผ ์ ๋ง๊ณผ ์ด๋ง์ ํฉ์ด ๋ณํ๋ค.
- ์ ๋ง(s)์ ๊ณฑ์ผ๋ก ๊ณ์ฐํ๋ค.
- ์ด๋ง(b)์ ํฉ์ผ๋ก ๊ณ์ฐํ๋ค.
- ์ ๋ง๊ณผ ์ด๋ง์ ์ฐจ์ด์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ ์ฝ๋ ๐ธ
n = int(input())
taste = []
visit = [0] * n
answer = 1000000000
for _ in range(n):
taste.append(list(map(int,input().split())))
def dfs(d, m, s, b, x):
global answer
if d >= m:
if s > b:
sum = s - b
else:
sum = b - s
answer = min(answer, sum)
return
for i in range(x,n):
if visit[i] == 0:
visit[i] = 1
dfs(d+1, m, s*taste[i][0], b+taste[i][1], i)
visit[i] = 0
for i in range(1, n+1):
dfs(0, i, 1, 0, 0)
print(answer)
๐ธ ์ฝ๋ ํด์ ๐ธ
- answer์ ์ด๊ธฐ๊ฐ์ ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ง์ ๋ฒ์(10์ต)๋ก ์ ํํ๋ค.
- ์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๊ณ ์ต์๊ฐ์ ๊ณ์ฐํ๋ค.
- dfs์ ๊น์ด์ ํ์ ์ ํํ ์ฌ๋ฃ์ ์๋ก ์๊ฐํ๊ณ ํ์ํ๋ค.
- 1๊ฐ๋ถํฐ n๊ฐ์ ์ ํ์ ๋ชจ๋ ํ์ํ๋ค.
- ์ด๋ง s๋ ๊ณฑ์ผ๋ก ๊ณ์ฐํ๋ฏ๋ก ์ด๊ธฐ๊ฐ์ 1๋ก ์์ํ๋ค.
๐ธ end ๐ธ
- ์ฒ์ ํ์ด๋ดค๋ค๋ฉด ์ด๋ ค์ธ ์๋ ์์์ ๊ฒ ๊ฐ์๋ฐ, BOJ_14620 : ๊ฝ๊ธธ ๋ฌธ์ ์์ ์ฌ์ฉํ ํ์ด๋ก ๊ฐ๋จํ ํ ์ ์์๋ค.
- ๋นํธ๋ง์คํน์ผ๋ก๋ ํ ์ ์๋ ๊ฒ ๊ฐ๋ค. ์๋ง 1์ฐจ์ ๋ฆฌ์คํธ์์์ ์ฌ๊ท๋ก ํ์ํ์ผ๋, ๋น์ทํ๊ฒ ๋ฐ๋ณต๋ฌธ์ผ๋ก ํ์ํ๋ ๊ฒ ๊ฐ๋ค.
- ๋ต์ ์ ์ถ์ ํ์ธํด๋ณด๋ ์ด์ํ ๋ชจ๋์ด import ๋์ด์์ด์ ์ญ์ ํ๊ณ ๋ค์ ์ ์ถํ๋ค.
728x90
'CodingTest > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : ํํ (0) | 2022.09.12 |
---|---|
BOJ_1548 : ๋ถ๋ถ ์ผ๊ฐ ์์ด (0) | 2022.09.11 |
BOJ_14620 : ๊ฝ๊ธธ (0) | 2022.09.10 |
BOJ_1037 : ์ฝ์ (0) | 2022.09.09 |
BOJ_4101 : ํฌ๋? (0) | 2022.09.09 |