๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/16922)
<๋ก๋ง ์ซ์ ๋ง๋ค๊ธฐ>
๋ฌธ์
๋ก๋ง ์ซ์์์๋ ์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด์ I, V, X, L์ ์ฌ์ฉํ๋ค. ๊ฐ ๋ฌธ์๋ 1, 5, 10, 50์ ์๋ฏธํ๊ณ ,
์ด ๋ฌธ์ ์์ ๋ค๋ฅธ ๋ฌธ์๋ ์ฌ์ฉํ์ง ์๋๋ค.
ํ๋ ๋๋ ๊ทธ ์ด์์ ๋ฌธ์๋ฅผ ์ด์ฉํด์ ์๋ฅผ ๋ํ๋ผ ์ ์๋ค. ๋ฌธ์์ด์ด ๋ํ๋ด๋ ๊ฐ์,
๊ฐ ๋ฌธ์๊ฐ ์๋ฏธํ๋ ์๋ฅผ ๋ชจ๋ ํฉํ ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด, XXXV๋ 35, IXI๋ 12๋ฅผ ์๋ฏธํ๋ค.
์ค์ ๋ก๋ง ์ซ์์์๋ ๋ฌธ์์ ์์๊ฐ ์ค์ํ์ง๋ง, ์ด ๋ฌธ์ ์์๋ ์์๋ ์ ๊ฒฝ ์ฐ์ง ์๋๋ค.
์๋ฅผ ๋ค์ด, ์ค์ ๋ก๋ง ์ซ์์์ IX๋ 9๋ฅผ ์๋ฏธํ์ง๋ง, ์ด ๋ฌธ์ ์์๋ 11์ ์๋ฏธํ๋ค.
๋ก๋ง ์ซ์๋ฅผ N๊ฐ ์ฌ์ฉํด์ ๋ง๋ค ์ ์๋ ์๋ก ๋ค๋ฅธ ์์ ๊ฐ์๋ฅผ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์์ ๊ฐ์ N (1 ≤ N ≤ 20)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ก๋ง ์ซ์ N๊ฐ๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค ์ ์๋ ์๋ก ๋ค๋ฅธ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
from itertools import combinations_with_replacement # ์ค๋ณต ์กฐํฉ
if __name__=='__main__':
n=int(sys.stdin.readline().strip())
num=[1,5,10,50]
arr=set() # ์๋ก ๋ค๋ฅธ ์ ๋ง๋ค๊ธฐ ์ํด set ์ ์ธ
for i in combinations_with_replacement(num, n):
arr.add(sum(list(i)))
print(len(arr)) # ๊ธธ์ด ์ถ๋ ฅ
๋งจ ์ฒ์ ์ฝ๋๋ฅผ ๊ตฌํ ํ ๋นผ๋จน์ ์กฐ๊ฑด์ "๋ง๋ค ์ ์๋ ์๋ก ๋ค๋ฅธ ์์ ๊ฐ์"๋ฅผ ๊ตฌํ๋ ๊ฒ์ด์๋ค.
- ์ด ๋ฌธ์ ์์ ์์๋ ์ ๊ฒฝ ์ฐ์ง ์์ผ๋ฏ๋ก ์ค๋ณต ์กฐํฉ์ ์ด์ฉํ๋ค.
- ์๋ก ๋ค๋ฅธ ์์ ๊ฐ์๋ฅผ count ํ๊ธฐ ์ํด set์ ์ด์ฉํ๋ค.
- ๊ฐ์๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ฏ๋ก ์ต์ข set์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
์๊ฐ๐ค
์ค๋ณต ์กฐํฉ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ ์ฐพ์๋ดค๋๋ python์ ์กฐํฉํ itertools๊ฐ ์์ด ํ์ฉํด๋ณผ ์ ์์๋ค.
*๋ค์๋ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์กฐํฉ๊ณผ ์์ด์ ๊ตฌํํด๋ณด๋ ๊ฒ์ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 11399_ATM (0) | 2021.10.20 |
---|---|
[Baekjoon] 1662_์์ถ (0) | 2021.10.10 |
[Baekjoon] 20920_์๋จ์ด ์๊ธฐ๋ ๊ดด๋ก์ (0) | 2021.10.07 |
[Baekjoon] 1935_ํ์ ํ๊ธฐ์2 (0) | 2021.10.04 |
[Baekjoon] 1874_์คํ ์์ด (0) | 2021.10.01 |