HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
💌
JJong’s Archive
/
🤖
코딩테스트
/
알파코드

알파코드

성공여부
NO
걸린시간(분)
정리
진행 중
문제출처
제로베이스
생성 일시
Apr 13, 2025 01:53 PM

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]; }
 

4️⃣ 시간복잡도