๋ฌธ์
์ซ์ 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์ ๋ฐํ
๋ฌธ์ ํ์ด
- N์ ์ต์ ์ฌ์ฉํ์๊ฐ 8๋ฒ๋ณด๋ค ํฌ๋ฉด -1์ ๋ฐํํ๋๋ก ์ ํ๋์ด์์ผ๋ฏ๋ก N์ 1๋ฒ ์ฌ์ฉํ๋ ๊ฒ์์๋ถํฐ 8๋ฒ์ฌ์ฉํ๋ ๊ฒ๊น์ง๋ฅผ ์์ฐจ์ ์ผ๋ก ์ซ์๋ฅผ ๋ง๋ค์ด๋ณด๊ณ , 1๋ฒ๋ถํฐ 8๋ฒ ์งํฉ์ ๊ฐ๊ฐ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ number๊ฐ ๋ง๋ค์ด์ก๋์ง ํ์ธํ๋ฉด ๋ฉ๋๋ค.
- N์ด 5์ผ๋ 5๋ N์ 1๋ฒ ์ฌ์ฉํ ๊ฒ์ด๊ณ , 55๋ 2๋ฒ, 555๋ 3๋ฒ, 5555๋ 4๋ฒ, 55555555๋ 8๋ฒ ์ฌ์ฉํ ๊ฒ ์ ๋๋ค. ์ด๋ฅผ ๊ฐ๊ฐ์ ์งํฉ์ ๋ฏธ๋ฆฌ ์ถ๊ฐํด์ค๋๋ค.
- 1๋ฒ ์งํฉ์ ๋ค์ด๊ฐ ์ ์๋ ์ซ์๋ 5 ํ๋ ๋ฐ์ ์์ต๋๋ค. 2๋ฒ ์งํฉ์๋ 55์ธ์ ๋ค์ด๊ฐ ์ ์๋ ์ซ์๊ฐ ์์ต๋๋ค. N + N, N-N, N*N, N/N. ์ฆ, 1๋ฒ ์งํฉ์ ๊ตฌ์ฑ์์๋ก ์ฌ์ธก์ฐ์ฐ์ ํ ๊ฒ์ ๋๋ค.
- 3๋ฒ ์งํฉ์ ๊ตฌ์ฑ์ 555์ ( 1๋ฒ์งํฉ์ ๊ตฌ์ฑ์์ +-*/ 2๋ฒ์งํฉ์ ๊ตฌ์ฑ์์), ( 2๋ฒ์งํฉ์ ๊ตฌ์ฑ์์ +-*/ 1๋ฒ์งํฉ์ ๊ตฌ์ฑ์์) ์ ๋๋ค.
- 4๋ฒ ์งํฉ์ ๊ตฌ์ฑ์ 5555์ ( 1๋ฒ์งํฉ์ ๊ตฌ์ฑ์์ +-*/ 3๋ฒ์งํฉ์ ๊ตฌ์ฑ์์), ( 2๋ฒ์งํฉ์ ๊ตฌ์ฑ์์ +-*/ 2๋ฒ์งํฉ์ ๊ตฌ์ฑ์์), ( 3๋ฒ์งํฉ์ ๊ตฌ์ฑ์์ +-*/ 1๋ฒ์งํฉ์ ๊ตฌ์ฑ์์) ์ ๋๋ค.
- ๋ง๋ค์ด์ง ์ซ์ ์ค ํ๊ฒ์ธ number์ด ๋ฐ๊ฒฌ๋๋ฉด ๋ฐ๋ก ์งํฉ ๋ฒํธ๋ฅผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค.
- ์ํ๊ฐ ๋ชจ๋ ๋๋ ํ์๋ 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)