๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/6603)
<๋ก๋>
๋ฌธ์
๋ ์ผ ๋ก๋๋ {1, 2, ..., 49}์์ ์ 6๊ฐ๋ฅผ ๊ณ ๋ฅธ๋ค.
๋ก๋ ๋ฒํธ๋ฅผ ์ ํํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฅ ์ ๋ช ํ ์ ๋ต์ 49๊ฐ์ง ์ ์ค k(k>6)๊ฐ์ ์๋ฅผ ๊ณจ๋ผ ์งํฉ S๋ฅผ ๋ง๋ ๋ค์ ๊ทธ ์๋ง ๊ฐ์ง๊ณ ๋ฒํธ๋ฅผ ์ ํํ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด, k=8, S={1,2,3,5,8,13,21,34}์ธ ๊ฒฝ์ฐ ์ด ์งํฉ S์์ ์๋ฅผ ๊ณ ๋ฅผ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ด 28๊ฐ์ง์ด๋ค. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])
์งํฉ S์ k๊ฐ ์ฃผ์ด์ก์ ๋, ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฒซ ๋ฒ์งธ ์๋ k (6 < k < 13)์ด๊ณ , ๋ค์ k๊ฐ ์๋ ์งํฉ S์ ํฌํจ๋๋ ์์ด๋ค. S์ ์์๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค.
์ ๋ ฅ์ ๋ง์ง๋ง ์ค์๋ 0์ด ํ๋ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค. ์ด๋, ์ฌ์ ์์ผ๋ก ์ถ๋ ฅํ๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค ์ฌ์ด์๋ ๋น ์ค์ ํ๋ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
from itertools import combinations #์กฐํฉ
if __name__=='__main__':
while True:
a=list(sys.stdin.readline().split())
if a[0]=='0': # ์ข
๋ฃ ์กฐ๊ฑด
break
else: #k=a[0], s=a[1::]
s=a[1::]
arr=list(combinations(s,6))
for i in arr:
print(' '.join(i))
print()
combinations๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ์ฌ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค.
โ ์ด๊ธฐ ์ฝ๋์์ ์ ์ถ๋ ฅ ์ด๊ณผ๊ฐ ๋ฐ์ํ์๋๊ฐ?
์ข ๋ฃ ์กฐ๊ฑด์ด ์ฌ๋ฐ๋ฅด์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ธฐ์ a==0์ผ๋ก ์ข ๋ฃ ์กฐ๊ฑด์ ๊ตฌํํ์ฌ ์ ๋๋ก ์ข ๋ฃํ์ง ๋ชปํ์๊ธฐ ๋๋ฌธ์
์คํ์ด ๋๋์ง ์์ ์ถ๋ ฅ ์ด๊ณผ๊ฐ ๋ฐ์ํ ๊ฒ์ด์๋ค. ์ข ๋ฃ ์กฐ๊ฑด์ ์ ๋๋ก ์ค์ ํ ํ ๋ฐ๋ก ํต๊ณผํ ์ ์์๋ค.
์๊ฐ๐ค
๋ค๋ค ์ด๋ ๊ฒ ํธ๋๊ฐ ๊ถ๊ธํด์ ์ฐพ์๋ณด๋ combinations๋ก ํ๊ธฐ๋ ํ๊ณ dfs๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ธฐ๋ ํ๋ ๊ฒ์ ๋ณผ ์ ์์๋ค.
๋ค์์ ์ค๋ ฅ ํฅ์์ ์ํด dfs๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ์๋ํด๋ด์ผ๊ฒ ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1389_์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2022.03.08 |
---|---|
[Baekjoon] 1991_ํธ๋ฆฌ ์ํ (0) | 2022.03.07 |
[Baekjoon] 5052_์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2022.03.02 |
[Baekjoon] 11726_2รn ํ์ผ๋ง (0) | 2022.03.01 |
[Baekjoon] 15988_1, 2, 3 ๋ํ๊ธฐ 3 (0) | 2022.02.28 |