[๋ฐฑ์ค/python] 1182๋ฒ : ๋ถ๋ถ์์ด์ ํฉ
๋ฌธ์
N๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์์ ๋, ํฌ๊ธฐ๊ฐ ์์์ธ ๋ถ๋ถ์์ด ์ค์์ ๊ทธ ์์ด์ ์์๋ฅผ ๋ค ๋ํ ๊ฐ์ด S๊ฐ ๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ N๊ณผ ์ ์ S๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) ๋์งธ ์ค์ N๊ฐ์ ์ ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์์ ์ ๋๊ฐ์ 100,000์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ํฉ์ด S๊ฐ ๋๋ ๋ถ๋ถ์์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
import itertools
N, S = map(int, sys.stdin.readline().split())
numbers = list(map(int, sys.stdin.readline().split()))
answer = 0
for i in range(1, N + 1):
for i in itertools.combinations(numbers, i):
if sum(i) == S:
answer += 1
print(answer)
๋๋ฒ์งธ ์ค์ ๋ฐ์ ์ซ์๋ค numbers์ ์กฐํฉ์ ๊ตฌํ์ฌ ์กฐํฉ๋ ์ซ์๋ค์ ํฉ sum(i)๋ฅผ S์ ๋น๊ตํ๋ค.
sum(i)์ S๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ๋ช ๋ฒ์ธ์ง๋ฅผ answer์ ์ ์ฅํ ํ ์ถ๋ ฅํ๋ค.
itertools์ combinations๋ฅผ ์ฌ์ฉํ์ฌ ์์ด์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
[ํ์ด์ฌ/python] ์์ด๊ณผ ์กฐํฉ : itertools ์ด์ฉํ๊ธฐ (permutations, combinations)
itertools๋ฅผ ์ด์ฉํ์ฌ ์์ด๊ณผ ์กฐํฉ์ ๊ตฌํํ๋ฉด ๋์ฑ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. 1. ์์ด : permutations(N, r) N์์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , r๊ฐ๋ฅผ ๋ฝ์ ์์๋๋ก ๋์ดํ๋ค. ์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ฝ
ye333.tistory.com
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 1260๋ฒ : DFS์ BFS (0) | 2021.04.05 |
---|---|
[๋ฐฑ์ค/python] 2108๋ฒ : ํต๊ณํ (0) | 2021.04.02 |
[๋ฐฑ์ค/python] 18258๋ฒ : ํ 2 (0) | 2021.03.30 |
[๋ฐฑ์ค/python] 9012๋ฒ : ๊ดํธ (0) | 2021.03.30 |
[๋ฐฑ์ค/python] 1149๋ฒ : RGB ๊ฑฐ๋ฆฌ (0) | 2021.03.30 |