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

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

1. ๋ฌธ์ œ

๋…์ผ ๋กœ๋˜๋Š” {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๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

1.1. ์ž…๋ ฅ

์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ˆ˜๋Š” k (6 < k < 13)์ด๊ณ , ๋‹ค์Œ k๊ฐœ ์ˆ˜๋Š” ์ง‘ํ•ฉ S์— ํฌํ•จ๋˜๋Š” ์ˆ˜์ด๋‹ค. S์˜ ์›์†Œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ž…๋ ฅ์˜ ๋งˆ์ง€๋ง‰ ์ค„์—๋Š” 0์ด ํ•˜๋‚˜ ์ฃผ์–ด์ง„๋‹ค. 

1.2. ์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋•Œ, ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‚ฌ์ด์—๋Š” ๋นˆ ์ค„์„ ํ•˜๋‚˜ ์ถœ๋ ฅํ•œ๋‹ค.

1.3. ์˜ˆ์ œ ์ž…๋ ฅ 1

<bash />
7 1 2 3 4 5 6 7 8 1 2 3 5 8 13 21 34 0

1.4. ์˜ˆ์ œ ์ถœ๋ ฅ 1

<bash />
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

2. ๐Ÿ‘‰ ํ’€์ด ์ฝ”๋“œ

<javascript />
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);

3. ๐Ÿ‘‰ ํ’€์ด ํ•ด์„ค

์ด ๋ฌธ์ œ๋Š” K๊ฐœ ์ค‘์—์„œ 6๊ฐœ๋ฅผ ๊ณจ๋ผ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ๋ฐ›๋Š” ๋ฐ˜๋ณต๋ฌธ ์•ˆ์— ์ž…์ถœ๋ ฅ์„ ๋ฐ›์•„์ฃผ๊ณ  ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฐฐ์—ด๊ณผ ์žฌ๊ท€๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ ์ˆซ์ž๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด์„ ์„ ์–ธ ํ•ด์ฃผ๊ณ , ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด์„ ๋ฌธ์ž์—ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์คฌ๋‹ค.

 

dfsํ•จ์ˆ˜์—์„œ๋Š” ์ค‘๋‹จ์ ์œผ๋กœ ์ตœ์ข…์ ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋‹ด๋Š” result ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 6์ด๋ผ๋ฉด  temp์— ๋„ฃ์–ด์ฃผ๋„๋ก ํ–ˆ๋‹ค.

์žฌ๊ท€๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด์„œ result ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 6์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ,

start๋ถ€ํ„ฐ k๊นŒ์ง€ ์ˆœํšŒํ•˜๋„๋ก ํ•ด์ฃผ๊ณ  ๋ฐฉ๋ฌธ์„ ํ™•์ธํ•œ ๋’ค, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค๋ผ๋ฉด ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€ ๋’ค arr์˜ ํ•ด๋‹น์ธ๋ฑ์Šค์˜ ๊ฐ’์„ result์— ๋„ฃ์–ด์คฌ๋‹ค.

์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ ๊บผ๋‚ด์ฃผ๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ์‹์œผ๋กœ ํ•ด์„œ k๊ฐœ์˜ ์›์†Œ์—์„œ 6๊ฐœ์˜ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ๋‹ด์€ ๊ฐ’๋“ค์„ ๋„ฃ์€ temp ๋ณ€์ˆ˜๋ฅผ answer์— ๋„ฃ์–ด์ฃผ๊ณ  ๋ชจ๋“  ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด answer๋ฅผ ์ถœ๋ ฅํ•ด์„œ ์ •๋‹ต์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›์•˜๋‹ค.

๋ฐ˜์‘ํ˜•
profile

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

@์šฉ๋‡ฝ

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