๐ป
[๋ฐฑ์ค] ๋ฐฑํธ๋ํน - 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์ด ํ๋ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค. ์ด๋, ์ฌ์ ์์ผ๋ก ์ถ๋ ฅํ๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค ์ฌ์ด์๋ ๋น ์ค์ ํ๋ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ1
7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
0
์์ ์ถ๋ ฅ1
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
์๊ฐ
์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ์ฐธ๋์ ํ๋ฆฌ์ง ์๋๋ค๋ฉด, https://www.acmicpc.net/workbook/view/2052 ์์ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด๊ณ ์ฐ์ต์ ํ๋ ๊ฒ์
์ถ์ฒํ๋ค. ๋๋ ์ฒ์์ ์ฝ์ง๋ง ํ๋ค๊ฐ ๋ช ๋ฌธ์ ํ์ด๋ณด๊ณ ๊ฐ์ ์ข ์ก์ ํ์ ๋ฌธ์ ๋ก ๋ค์ ๋์์์ ํ ์ ์์๋ค.
์ ๋ ฅ ์กฐ๊ฑด์ while๋ฌธ ๋ฌดํ๋ฃจํ๋ก ๋๋ค๊ฐ 0์ ์ ๋ ฅ๋ฐ์ผ๋ฉด break๋ฅผ ์จ์ ๋น ์ ธ๋์ค๊ฒ ํ๋ ๊ฑฐ๋ก ๊ตฌํํ์๋ค.
์ฒซ๋ฒ์งธ ์ ์ถ์๋์ '์ถ๋ ฅ ํ์์ด ์๋ชป๋์์ต๋๋ค.' ๋ฉ์ธ์ง๋ฅผ ๋ฐ๊ณ ์คํจํ๋ค. ๋ ๋ญ ์๋ชปํ๋ ํด์ ๋ดค๋๋ ์ค๋ฐ๊ฟ์ด ์ถ๋ ฅ ํ์ ์กฐ๊ฑด์ด์๋ค.
์์ฑํ ์ฝ๋
#include <iostream>
#define MAX 6
using namespace std;
int check[MAX];
int arr[13];
int n;
void DFS(int index, int cnt){
if(cnt == 6){
for(int i=0; i<6; i++){
cout << check[i] << " ";
}
cout << "\n";
return;
}
for(int i=index; i<n; i++){
check[cnt] = arr[i];
DFS(i+1, cnt+1);
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
while(true){
cin >> n;
if(n==0){
break;
}
for(int i=0; i<n; i++){
cin >> arr[i];
}
DFS(0, 0);
cout << "\n";
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋์ ๊ณํ๋ฒ - 1904. 01ํ์ผ (0) | 2020.02.12 |
---|---|
[๋ฐฑ์ค] ์ด๋ถ ํ์ - 1920. ์ ์ฐพ๊ธฐ (0) | 2020.02.04 |
[๋ฐฑ์ค] ์ฌ๊ท - 2447. ๋ณ ์ฐ๊ธฐ - 10 (0) | 2020.02.02 |
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 2231. ๋ถํดํฉ (0) | 2020.02.01 |
[๋ฐฑ์ค] ํ,๋ฑ - 18258. ํ 2 (0) | 2020.01.31 |