ํผ์์๋ ์ ๋ ธ๋ ๋ฒํฌ๋ ์ด๋ ๋ ๋ฐฉ๊ตฌ์์ ์๋ ์ซ์ ์นด๋ ๋๋ฏธ๋ฅผ ๋ณด๋๋ ํผ์ ํ ์ ์๋ ์ฌ๋ฏธ์๋ ๊ฒ์์ ์๊ฐํด๋์ต๋๋ค.
์ซ์ ์นด๋ ๋๋ฏธ์๋ ์นด๋๊ฐ ์ด 100์ฅ ์์ผ๋ฉฐ, ๊ฐ ์นด๋์๋ 1๋ถํฐ 100๊น์ง ์ซ์๊ฐ ํ๋์ฉ ์ ํ์์ต๋๋ค. 2 ์ด์ 100 ์ดํ์ ์์ฐ์๋ฅผ ํ๋ ์ ํด ๊ทธ ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ซ์ ์นด๋๋ค์ ์ค๋นํ๊ณ , ์ค๋นํ ์นด๋์ ์๋งํผ ์์ ์์๋ฅผ ์ค๋นํ๋ฉด ๊ฒ์์ ์์ํ ์ ์์ผ๋ฉฐ ๊ฒ์ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋น๋ ์์์ ์นด๋๋ฅผ ํ ์ฅ์ฉ ๋ฃ๊ณ , ์์๋ฅผ ๋ฌด์์๋ก ์์ด ์ผ๋ ฌ๋ก ๋์ดํฉ๋๋ค. ์์๊ฐ ์ผ๋ ฌ๋ก ๋์ด๋๋ฉด ์์๊ฐ ๋์ด๋ ์์์ ๋ฐ๋ผ 1๋ฒ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๋ฒํธ๋ฅผ ๋ถ์ ๋๋ค.
๊ทธ ๋ค์ ์์์ ์์๋ฅผ ํ๋ ์ ํํ์ฌ ์ ํํ ์์ ์์ ์ซ์ ์นด๋๋ฅผ ํ์ธํฉ๋๋ค. ๋ค์์ผ๋ก ํ์ธํ ์นด๋์ ์ ํ ๋ฒํธ์ ํด๋นํ๋ ์์๋ฅผ ์ด์ด ์์ ๋ด๊ธด ์นด๋์ ์ ํ ์ซ์๋ฅผ ํ์ธํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ซ์์ ํด๋นํ๋ ๋ฒํธ๋ฅผ ๊ฐ์ง ์์๋ฅผ ๊ณ์ํด์ ์ด์ด๊ฐ๋ฉฐ, ์ด์ด์ผ ํ๋ ์์๊ฐ ์ด๋ฏธ ์ด๋ ค์์ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.
์ด๋ ๊ฒ ์ฐ ์์๋ค์ 1๋ฒ ์์ ๊ทธ๋ฃน์ ๋๋ค. ์ด์ 1๋ฒ ์์ ๊ทธ๋ฃน์ ๋ค๋ฅธ ์์๋ค๊ณผ ์์ด์ง ์๋๋ก ๋ฐ๋ก ๋ก๋๋ค. ๋ง์ฝ 1๋ฒ ์์ ๊ทธ๋ฃน์ ์ ์ธํ๊ณ ๋จ๋ ์์๊ฐ ์์ผ๋ฉด ๊ทธ๋๋ก ๊ฒ์์ด ์ข ๋ฃ๋๋ฉฐ, ์ด๋ ํ๋ํ๋ ์ ์๋ 0์ ์ ๋๋ค.
๊ทธ๋ ์ง ์๋ค๋ฉด ๋จ์ ์์ ์ค ๋ค์ ์์์ ์์ ํ๋๋ฅผ ๊ณจ๋ผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ ์ด๋ ค์๋ ์์๋ฅผ ๋ง๋ ๋๊น์ง ์์๋ฅผ ์ฝ๋๋ค. ์ด๋ ๊ฒ ์ฐ ์์๋ค์ 2๋ฒ ์์ ๊ทธ๋ฃน์ ๋๋ค.
1๋ฒ ์์ ๊ทธ๋ฃน์ ์ํ ์์์ ์์ 2๋ฒ ์์ ๊ทธ๋ฃน์ ์ํ ์์์ ์๋ฅผ ๊ณฑํ ๊ฐ์ด ๊ฒ์์ ์ ์์ ๋๋ค.
์์ ์์ ๋ค์ด์๋ ์นด๋ ๋ฒํธ๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด cards
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ฒํฌ๊ฐ ์ด ๊ฒ์์์ ์ป์ ์ ์๋ ์ต๊ณ ์ ์๋ฅผ ๊ตฌํด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
cards
์ ๊ธธ์ด โค 100cards
์ ์์๋ cards
์ ๊ธธ์ด ์ดํ์ธ ์์์ ์์ฐ์์
๋๋ค.cards
์๋ ์ค๋ณต๋๋ ์์๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.cards[i]
๋ i + 1๋ฒ ์์์ ๋ด๊ธด ์นด๋์ ์ ํ ์ซ์๋ฅผ ์๋ฏธํฉ๋๋ค.cards | result |
---|---|
[8,6,3,7,2,5,1,4] | 12 |
1, 4, 7, 8์ด ์ํ๋ ์์์ ๊ทธ๋ฃน๊ณผ 2, 5, 6์ด ์ํ๋ ์์์ ๊ทธ๋ฃน๊ณผ 3์ด ์ํ๋ ์์์ ๊ทธ๋ฃน์ด ์กด์ฌํฉ๋๋ค. ๋ฐ๋ผ์ 3๋ฒ ์์๋ฅผ ๊ณ ๋ฅด์ง ์์์ ๋, ๋ ๋ฒ์ ์ํ์์ 3๊ณผ 4๋ฅผ ๊ธฐ๋กํ๋ฉฐ ์ต๊ณ ์ ์ 12๋ฅผ ์ป์ ์ ์์ต๋๋ค.
function solution(cards) {
let answer = 0
// ์นด๋๋ฅผ ๋ฝ์ ์ด๋ํ๋ ํจ์
function drawCard(arr, num, group = []) {
// ๊ฒฝ์ ํ ์์๋ ๊ฐ์ 0 ์ผ๋ก ๋ฐ๊พธ๋ฉฐ ๋ค์ 0์ ๋์ฐฉํ ๋๊น์ง ์ฌ๊ท
if(arr[num-1] === 0) return group.length
group.push(arr[num-1])
const temp = arr[num-1]
arr[num-1] = 0
num = temp
return drawCard(arr, num, group)
}
// // ์ฒซ ์์ ๊ทธ๋ฃน ๊ตฌ์ฑ
cards.forEach((card, idx) => {
// cards ๋ฐฐ์ด ์ฌ๋ณธ ์์ฑ
const copy1 = [...cards]
const first = drawCard(copy1, card)
// ๋ ๋ฒ์งธ ์์ ๊ทธ๋ฃน ๊ตฌ์ฑ
copy1.forEach((card2, idx2) => {
// ์ด๋ฆฐ ์์๊ฐ ์๋๋ผ๋ฉด
if(card2 !== 0) {
// cards ๋ฐฐ์ด ์ฌ๋ณธ ์์ฑ
const copy2 = [...copy1]
const second = drawCard(copy2, card2)
// ํ์ฌ ์ต๋์น์ ๋น๊ตํ์ฌ ๋ ํฐ ๊ฐ์ ํ ๋น
answer = Math.max(answer, first * second)
}
})
})
return answer
}