๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - N์œผ๋กœ ํ‘œํ˜„

๋ฌธ์ œ

 

์ˆซ์ž 5์™€ ์‚ฌ์น™์—ฐ์‚ฐ๋งŒ์œผ๋กœ 12๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • 12 = 5 + 5 + (5 / 5) + (5 / 5)
  • 12 = 55 / 5 + 5 / 5
  • 12 = (55 + 5) / 5

5๋ฅผ ์‚ฌ์šฉํ•œ ํšŸ์ˆ˜๋Š” ๊ฐ๊ฐ 6,5,4 ์ด๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฒฝ์šฐ๋Š” 4์ด๋‹ค.

์ˆซ์ž N๊ณผ number๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ N๊ณผ ์‚ฌ์ธก์—ฐ์‚ฐ๋งŒ์œผ๋กœ number๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ N์˜ ์ตœ์†Œ์‚ฌ์šฉํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ผ.

 

 

์ œํ•œ์‚ฌํ•ญ 

  • 1 <= N <= 9
  • 1 <= number <= 32000
  • ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์—์„œ ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œํ•˜๊ธฐ
  • ์ตœ์†Ÿ๊ฐ’์ด 8๋ณด๋‹ค ํฌ๋ฉด -1์„ ๋ฐ˜ํ™˜

 

๋ฌธ์ œํ’€์ด

 

  1. N์˜ ์ตœ์†Œ ์‚ฌ์šฉํšŸ์ˆ˜๊ฐ€ 8๋ฒˆ๋ณด๋‹ค ํฌ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์ œํ•œ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ N์„ 1๋ฒˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—์„œ๋ถ€ํ„ฐ 8๋ฒˆ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊นŒ์ง€๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ณ , 1๋ฒˆ๋ถ€ํ„ฐ 8๋ฒˆ ์ง‘ํ•ฉ์— ๊ฐ๊ฐ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  number๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  2. N์ด 5์ผ๋•Œ 5๋Š” N์„ 1๋ฒˆ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๊ณ , 55๋Š” 2๋ฒˆ, 555๋Š” 3๋ฒˆ, 5555๋Š” 4๋ฒˆ, 55555555๋Š” 8๋ฒˆ ์‚ฌ์šฉํ•œ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ๊ฐ์˜ ์ง‘ํ•ฉ์— ๋ฏธ๋ฆฌ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.
  3. 1๋ฒˆ ์ง‘ํ•ฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๋Š” 5 ํ•˜๋‚˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. 2๋ฒˆ ์ง‘ํ•ฉ์—๋Š” 55์™ธ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. N + N, N-N, N*N, N/N. ์ฆ‰, 1๋ฒˆ ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์‚ฌ์ธก์—ฐ์‚ฐ์„ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. 3๋ฒˆ ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์€ 555์™€ ( 1๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ +-*/ 2๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ),  ( 2๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ +-*/ 1๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ) ์ž…๋‹ˆ๋‹ค.
  5. 4๋ฒˆ ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์€ 5555์™€ ( 1๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ +-*/ 3๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ),  ( 2๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ +-*/ 2๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ),  ( 3๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ +-*/ 1๋ฒˆ์ง‘ํ•ฉ์˜ ๊ตฌ์„ฑ์š”์†Œ) ์ž…๋‹ˆ๋‹ค.
  6. ๋งŒ๋“ค์–ด์ง„ ์ˆซ์ž ์ค‘ ํƒ€๊ฒŸ์ธ number์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ๋ฐ”๋กœ ์ง‘ํ•ฉ ๋ฒˆํ˜ธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  7. ์ˆœํšŒ๊ฐ€ ๋ชจ๋‘ ๋๋‚œ ํ›„์—๋„ number๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด, ์ตœ์†ŒํšŸ์ˆ˜๊ฐ€ 8์ด์ƒ์ธ ๊ฒƒ์ด๋ฏ€๋กœ -1๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
function solution(N, number) {
    const s = [new Set()]
    for (let i = 1; i <= 8; i++) {
        s.push(new Set([new Array(i).fill(N).join('') * 1]))
        for (let j = 1; j <= i; j++) {
            for (const x1 of [...s[j]]) {
                for (const x2 of [...s[i-j]]) {
                    s[i].add(x1 + x2)
                    s[i].add(x1 - x2)
                    s[i].add(x1 * x2)
                    if (x2) {
                        s[i].add((x1 / x2) - (x1 / x2) % 1)
                    }
                }
            }
        }
        if (s[i].has(number)) {
            return i
        }
    }
    return -1
}

 

์‹œ๊ฐ„๋ณต์žก๋„: O(8 * 8 * 4 * 8) = O(1)

๊ณต๊ฐ„๋ณต์žก๋„: O(1)