๋ฌธ์
๋ ์ผ ๋ก๋๋ {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
๐ ํ์ด ์ฝ๋
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(file).toString().trim().split('\n');
let answer = '';
for (let tc = 0; tc < input.length - 1; tc++) {
const testCase = input[tc].split(' ');
const k = Number(testCase[0]);
const arr = testCase.slice(1).map(Number);
const visited = new Array(k).fill(false);
const result = [];
let temp = '';
function dfs(start) {
if (result.length === 6) {
temp += result.join(' ') + '\n';
return;
}
for (let i = start; i < k; i++) {
if (visited[i]) continue;
visited[i] = true;
result.push(arr[i]);
dfs(i + 1);
result.pop();
visited[i] = false;
}
}
dfs(0);
answer += temp + '\n';
}
console.log(answer);
๐ ํ์ด ํด์ค
์ด ๋ฌธ์ ๋ K๊ฐ ์ค์์ 6๊ฐ๋ฅผ ๊ณจ๋ผ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ๋ ๋ฌธ์ ๋ก ๋ณผ ์ ์๋ค.
ํ ์คํธ์ผ์ด์ค๋ฅผ ๋ฐ๋ ๋ฐ๋ณต๋ฌธ ์์ ์ ์ถ๋ ฅ์ ๋ฐ์์ฃผ๊ณ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ฐฐ์ด๊ณผ ์ฌ๊ท๋ฅผ ํธ์ถํ๋ฉด์ ์ซ์๋ฅผ ๋ด์ ๋ฐฐ์ด์ ์ ์ธ ํด์ฃผ๊ณ , ํ ์คํธ ์ผ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ ๋ฌธ์์ด ๋ณ์๋ฅผ ์ ์ธํด ์คฌ๋ค.
dfsํจ์์์๋ ์ค๋จ์ ์ผ๋ก ์ต์ข ์ ์ผ๋ก ์ซ์๋ฅผ ๋ด๋ result ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 6์ด๋ผ๋ฉด temp์ ๋ฃ์ด์ฃผ๋๋ก ํ๋ค.
์ฌ๊ท๋ฅผ ํธ์ถํ๋ฉด์ result ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 6์ด ์๋๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์คํํ๋๋ฐ,
start๋ถํฐ k๊น์ง ์ํํ๋๋ก ํด์ฃผ๊ณ ๋ฐฉ๋ฌธ์ ํ์ธํ ๋ค, ๋ฐฉ๋ฌธํ์ง ์์ ์ธ๋ฑ์ค๋ผ๋ฉด ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์ค ๋ค arr์ ํด๋น์ธ๋ฑ์ค์ ๊ฐ์ result์ ๋ฃ์ด์คฌ๋ค.
์ฌ๊ท ํจ์๊ฐ ๋๋๋ฉด ๋ค์ ๊บผ๋ด์ฃผ๊ณ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์ ํ๋ ์์ผ๋ก ํด์ k๊ฐ์ ์์์์ 6๊ฐ์ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ ์ ์๋ค.
๋ง์ง๋ง์ผ๋ก ํ ์คํธ ์ผ์ด์ค๋ง๋ค ๋ด์ ๊ฐ๋ค์ ๋ฃ์ temp ๋ณ์๋ฅผ answer์ ๋ฃ์ด์ฃผ๊ณ ๋ชจ๋ ํ ์คํธ์ผ์ด์ค๊ฐ ์ข ๋ฃ๋๋ฉด answer๋ฅผ ์ถ๋ ฅํด์ ์ ๋ต์ฒ๋ฆฌ๋ฅผ ๋ฐ์๋ค.