[Baekjoon/๐ฅSilverโ ก] 1182: ๋ถ๋ถ์์ด์ ํฉ
Intro
Algoritm๐ฉโ๐ป: combination
#21.01.12
#1182: ๋ถ๋ถ์์ด์ ํฉ
import sys, itertools
N, S = map(int, sys.stdin.readline().rstrip().split())
lst = list(map(int, sys.stdin.readline().rstrip().split()))
count = 0
for i in range(1, N+1):
result = list(itertools.combinations(lst, i))
for j in result:
if sum(j) == S:
count += 1
print(count)
- ์ฃผ์ด์ง ์์ด๋ก ๋ง๋ค ์ ์๋ ๋ชจ๋ ๋ถ๋ถ์์ด์ ๊ตฌํ๋ค.
- combination ํจ์ ์ฌ์ฉ!
- ๋ถ๋ถ์์ด์ ํฉ์ด S์ธ ๊ฒฝ์ฐ๋ฅผ ์นด์ดํธํ๋ค.
Algoritm๐ฉโ๐ป: DFS
import sys
def dfs(index, sum):
global count
if index >= N:
return
sum += lst[index]
if sum == S:
count += 1
dfs(index + 1, sum)
dfs(index + 1, sum - lst[index])
N, S = map(int, sys.stdin.readline().rstrip().split())
lst = list(map(int, sys.stdin.readline().rstrip().split()))
count = 0
dfs(0, 0)
print(count)
- ์ธ๋ฑ์ค๋ฅผ ํ๋์ฉ ๋๋ ค๊ฐ๋ฉฐ ์์ด์ ๋ชจ๋ ๊ฐ์ ์ํํ๋ค.
- ํด๋น๊ฐ์ ๋ํ์ ๊ฒฝ์ฐ์ ๋ํ์ง ์์์ ๊ฒฝ์ฐ๋ก ๋๋์ด ์ฌ๊ทํจ์๋ฅผ ๊ตฌํํ๋ค.
- dfs ์ ์ฉ!
- ํด๋น๊ฐ์ ๋ํ์ ๊ฒฝ์ฐ์ ๋ํ์ง ์์์ ๊ฒฝ์ฐ๋ก ๋๋์ด ์ฌ๊ทํจ์๋ฅผ ๊ตฌํํ๋ค.
์ฐธ๊ณ ๐
์ด๋ฒ ํฌ์คํ ์ ์ฌ๊ธฐ์!!
๋!! ~(หโพห~)
๋๊ธ๋จ๊ธฐ๊ธฐ