인프런 커뮤니티 질문&답변

sdqkmlqdwkmqwdl님의 프로필 이미지
sdqkmlqdwkmqwdl

작성한 질문수

자바 코딩테스트 - it 대기업 유제

6. "알파코드" 문제 해법

알파코드 풀이질문입니다

작성

·

118

·

수정됨

0

전문제 "ip주소"와 비슷하게 해결하였는데 이렇게 풀면 시간초과가 발생할까요?

class Solution {
    static int n, answer;

    static void dfs(int L, String s) {
        if (L == n) {
            answer++;
        } else {
            for (int i = L; i < n; i++) {
                String temp = s.substring(L, i + 1);
                if (check(temp)) {
                    dfs(i + 1, s);
                }
                else{
                    break;
                }
            }
        }

    }

    static boolean check(String str) {
        if (str.charAt(0) == '0') {
            return false;
        }
        int num = Integer.parseInt(str);
        return num >= 1 && num <= 26;
    }

    public int solution(String s) {
        answer = 0;
        n = s.length();
        dfs(0, s);

        return answer;
    }

    public static void main(String[] args) {
        Solution T = new Solution();
        System.out.println(T.solution("25114"));
        System.out.println(T.solution("23251232"));
        System.out.println(T.solution("21020132"));
        System.out.println(T.solution("21350"));
        System.out.println(T.solution("120225"));
        System.out.println(T.solution("232012521"));
    }
}

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. sdqkmlqdwkmqwdl님, 질문 주셔서 감사합니다.

주어진 코드에서는 깊이 우선 탐색(DFS)를 이용하여 각 단계에서 가능한 모든 문자열 조합을 확인하고 있습니다. 이러한 방법은 경우의 수가 많을 때 시간 복잡도가 기하급수적으로 증가할 수 있어 시간 초과가 발생할 가능성이 높습니다.

ip주소 문제와 이 알파코드 문제는 유사한 부분이 있지만, 서로 다른 문제점을 가지고 있을 수 있으니 이 점을 고려하셔야 합니다. 특히, 알파코드 문제에서는 불필요한 경우의 수를 줄이거나, 동적 계획법(Dynamic Programming, DP)을 사용하여 이미 계산한 부분 결과를 재사용하는 방법으로 최적화할 수 있습니다.

문제의 구체적인 제약 조건이나 입력 값의 크기에 따라 최적화 방법이 달라질 수 있으므로, 성능 개선을 위해서는 주어진 입력 값 대해 시간 복잡도를 분석하고, 필요한 경우 메모이제이션(Memoization)과 같은 기술을 적용하여 중복 계산을 최소화하는 것을 고려해 볼 수 있습니다.

각주기식 접근에 대한 고민과 최적화 방법 탐색을 계속해 보시기 바랍니다. 문제 해결에 도움이 되시길 바랍니다.

sdqkmlqdwkmqwdl님의 프로필 이미지
sdqkmlqdwkmqwdl

작성한 질문수

질문하기