1๏ธโฃ ๋ฌธ์
2๏ธโฃ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต
3๏ธโฃ ์ฝ๋ ๋ฐ ์ค๋ช
๋ด ์ฝ๋
function solution(s) { var answer = new Set([]); function dfs(curIdx, arr) { if (curIdx === s.length) { console.log(arr); return; } for (let count = 1; count <= 2; count++) { if (curIdx + count > s.length) { break; } let newStr = Array.from(s).slice(curIdx, curIdx + count); const slicedNum = Number(newStr.join("")); if (slicedNum > 0 && slicedNum <= 26) { dfs(curIdx + count, [...arr, slicedNum]); } } } dfs(0, []); return answer.size; }
๋ชจ๋ฒ ์ฝ๋
function solution(s) { const n = s.length; if (n === 0) return 0; // dp[i]: s[0...i-1]๊น์ง ํด๋ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ const dp = Array(n + 1).fill(0); dp[0] = 1; // ๋น ๋ฌธ์์ด์ 1๊ฐ์ง ๋ฐฉ๋ฒ(์๋ฌด๊ฒ๋ ์ ๋ฝ์) dp[1] = s[0] !== "0" ? 1 : 0; // ์ฒซ๊ธ์๊ฐ 0์ด ์๋๋ผ๋ฉด 1๊ฐ์ง for (let i = 2; i <= n; i++) { // ํ ์๋ฆฌ ๋ณํ let one = +s[i - 1]; if (one >= 1 && one <= 9) { dp[i] += dp[i - 1]; } // ๋ ์๋ฆฌ ๋ณํ let two = +s.slice(i - 2, i); if (two >= 10 && two <= 26) { dp[i] += dp[i - 2]; } } return dp[n]; }