JAVA/Coding Test

[JAVA] 백준 2011 암호코드 _DP

오늘도개발 2024. 6. 21. 17:54

 

문제:

https://www.acmicpc.net/problem/2011

 

 

접근 : 

 

 - 0 으로 시작하는 숫자가 들어오면 복호화가 불가능 하므로 0을 출력한다.

 

 - 길이가 2이상인 경우에는 복호화 한 수가 26 이하이면 2, 6 개별 수 및 26 합친 수의 경우 모두를 고려한다.

 

 - 첫 번째 글자부터 끝까지 확인하면서 정답을 구한다.

 

 

코드 구 :

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();

        if(input.charAt(0) - '0' == 0){
            System.out.println(0);
            return;
        }

        int[] dp = new int[input.length()+1];
        dp[0] = 1;
        dp[1] = 1;

        int now;
        int before = input.charAt(0) - '0';

        for(int i = 2 ; i <= input.length() ; i++){
            now = input.charAt(i-1) - '0';

            if (now > 0) dp[i] += dp[i - 1];

            int temp = before * 10 + now ;
            before = now;

            if (10 <= temp && temp <= 26) dp[i] += dp[i - 2];
            dp[i] %= 1000000;
        }
        System.out.println(dp[input.length()]);
    }
}



'JAVA > Coding Test' 카테고리의 다른 글

[JAVA] 백준 2193 이친수_DP  (0) 2024.06.24
[JAVA] 백준 2156 포도주_DP  (0) 2024.06.24
[JAVA] 백준 11052 카드 구매하기_DP  (0) 2024.06.20
[JAVA] 백준 3055 탈출_BFS  (0) 2024.06.18
[JAVA] 백준 14713 앵무새_포인터  (0) 2024.06.18