[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 모음사전

2026. 7. 27. 02:56·알고리즘 & 자료구조/문제 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이 방법

  • DFS로 A,E,I,O,U를 사전순으로 조합해가며 문자열 생성
  • 문자열이 하나 완성될 때마다 cnt++
  • target과 일치하면 found = true로 표시하고 탐색 중단

 

class Solution {
    char[] alphabets = {'A', 'E', 'I', 'O', 'U'};
    int cnt = 0;
    boolean found = false;
    
    public int solution(String word) {
        dfs(new StringBuilder(), word);
        return cnt;
    }
    
    public void dfs(StringBuilder sb, String target) {
        if(found) return;
        if(sb.length() == 5) return;
        
        for(int i=0; i<alphabets.length; i++) {
            sb.append(alphabets[i]);
            cnt++;
            if(target.equals(sb.toString())) {
                found = true;
                return;
            }
            dfs(sb, target);
            if(found) return;
            sb.deleteCharAt(sb.length() - 1);
        }
    }
}

배운 점

  • 사전순 나열은 알파벳 배열을 순서대로 순회하는 DFS로 자연스럽게 구현됨
  • deleteCharAt(idx): 문자 하나만 삭제 (delete(start,end)는 범위 삭제라 인자 2개 필요)
  • 재귀 호출 후 found 체크를 안 하면, 정답을 찾은 뒤에도 다른 분기를 계속 탐색해 cnt가 잘못 커짐 → 재귀 호출 직후 반드시 found 체크 필요


조건문을 조금 더 깔끔하게 한다면.

private void dfs(StringBuilder sb, String target) {
    if (found) return;
    if (sb.length() == 5) return;

    for (int i = 0; i < alphabets.length && !found; i++) {
        sb.append(alphabets[i]);
        cnt++;
        if (sb.toString().equals(target)) {
            found = true;
        } else {
            dfs(sb, target);
        }
        sb.deleteCharAt(sb.length() - 1);
    }
}
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글

[프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 다리를 지나는 트럭  (0) 2026.07.29
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 전력망을 둘로 나누기  (0) 2026.07.25
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 피로도  (0) 2026.07.12
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 카펫  (0) 2026.07.08
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 소수 찾기  (0) 2026.07.07
'알고리즘 & 자료구조/문제 풀이' 카테고리의 다른 글
  • [프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 다리를 지나는 트럭
  • [프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 전력망을 둘로 나누기
  • [프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 피로도
  • [프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 카펫
수수다
수수다
우하하
  • 수수다
    그냥살자
    수수다
  • 전체
    오늘
    어제
    • 분류 전체보기 (80) N
      • 프로젝트 (1)
      • 알고리즘 & 자료구조 (43) N
        • 내용 정리 (2)
        • 문제 풀이 (41) N
      • 데이터베이스 (32)
        • 내용 정리 (1)
        • 문제 풀이 (31)
      • CS (2)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 네이버 블로그
  • 공지사항

  • 인기 글

  • 태그

    bfs
    date_format
    백트래킹
    분리집합
    해시
    완전탐색
    알고리즘
    AVG
    그래프
    코딩테스트
    이분탐색
    dfs
    동적계획법
    Round
    like
    프로그래머스 알고리즘 고득점 kit
    코테
    IFNULL
    정렬
    DP
    SQL
    깊이/너비 우선 탐색(DFS/BFS)
    유니온파인드
    Java
    mysql
    코딭테스트
    프로그래머스
    coalesce
    블럭비교
    SUBSTR
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
수수다
[프로그래머스 알고리즘 고득점 Kit][완전탐색][Java] 모음사전
상단으로

티스토리툴바