๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
๋ฐ˜์‘ํ˜•

[๋ฐฑ์ค€]6603๋ฒˆ '๋กœ๋˜' ๋ฌธ์ œํ’€์ด - JavaScript

๋ฌธ์ œ

๋…์ผ ๋กœ๋˜๋Š” {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๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์ •๋‹ต์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›์•˜๋‹ค.

๋ฐ˜์‘ํ˜•
profile

๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป

@์šฉ๋‡ฝ

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!