728x90
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
만들 수 있는 문자열이 몇 개 없으니까 다 만들어보기
DFS + 백트래킹 > 원하는 단어랑 일치하면 cnt 리턴
이미 찾은 경우 재귀 멈추는 flag 유의하기 : 조기 중단해야 하는 경우
class Solution {
static final char[] a = {'A', 'E', 'I', 'O', 'U'};
static String word;
static int result = 0;
public int solution(String word) {
// DFS 백트래킹 이용 > AEIOU 순으로 깊이를 1~5로 확장하면서 단어 하나씩 만들때마다 카운트 > word랑 같으면 result 반환
this.word = word;
dfs(""); // 빈 문자열에서 시작
return result;
}
static boolean flag = false;
public static void dfs(String s){
if(flag) return; // 이미 찾았으면 중단
if(s.length() == 5) return; // 최대 길이 5
for(char c : a){
String next = s + c;
result++;
if(word.equals(next)){
// 원하는 단어랑 같은 경우
flag = true;
return;
}
dfs(next);
if(flag) return;
}
}
}'Algorithm > Programmers' 카테고리의 다른 글
| [Lv.2] 최댓값과 최솟값 : Java (0) | 2025.10.14 |
|---|---|
| [Lv.2] 타겟 넘버 : Java (0) | 2025.09.27 |
| [Lv.2] 전력망을 둘로 나누기 : Java (0) | 2025.09.26 |
| [Lv.2] 카펫 : Java (0) | 2025.09.26 |
| [Lv.2] 게임 맵 최단거리 : Java (0) | 2025.09.26 |