Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- 커밋 메시지
- 코딩테스트
- OOM
- 부트스트랩
- 회고
- 프로젝트
- 세션로그인
- 우테코
- Java
- llm
- fastapi
- 서버 꺼짐
- mysql
- 알고리즘
- springboot
- Lv.2
- docker
- 게시판
- 쿠키로그인
- 로그인
- Dockerfile
- 해외봉사
- openAI
- Spring
- LV2
- 네팔
- crud
- spring boot
- cors
Archives
- Today
- Total
s00jin 님의 블로그
[프로그래머스/JAVA] Lv.2 모음사전 | 완전 탐색, DFS 본문
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사항
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
입출력 예
| word | result |
| "AAAE" | 10 |
| "I" | 1563 |
| "EIO" | 1189 |
| "AAAAE" | 6 |
입출력 예 설명
입출력 예 #1
사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA", "AAA", "AAAA", "AAAAA", "AAAAE", ... 와 같습니다. "AAAAE"는 사전에서 6번째 단어입니다.
입출력 예 #2
"AAAE"는 "A", "AA", "AAA", "AAAA", "AAAAA", "AAAAE", "AAAAI", "AAAAO", "AAAAU"의 다음인 10번째 단어입니다.
입출력 예 #3
"I"는 1563번째 단어입니다.
입출력 예 #4
"EIO"는 1189번째 단어입니다.
문제 풀이
- 전위 순회하면서 트리를 순회하면 사전 순서로 문자열 구할 수 있음
예시
알파벳 {A, E, I}만 사용
- 루트 “”
- 자식 : A, E, I
- “”
- A → AA → AAA → AAE → AAI → AE → AEA → AEE → AEI
- E → EA → EAA → …

코드
import java.util.*;
class Solution {
// 알파벳 배열
char[] alphabet = {'A', 'E', 'I', 'O', 'U'};
// 생성된 단어를 담을 리스트
ArrayList<String> list;
public void dfs(String s){
list.add(s);
// 단어 길이가 5일 경우 자식 탐색을 멈춤
if (s.length() == 5){
return;
}
for (int i=0; i<alphabet.length; i++){
// 자식 탐색
dfs(s+alphabet[i]);
}
}
public int solution(String word) {
int answer = 0;
list = new ArrayList<>();
dfs("");
// ""이 루트이기 때문에 1부터 시작
for (int i=1; i<list.size(); i++){
if (list.get(i).equals(word)){
answer = i;
break;
}
}
return answer;
}
}
'알고리즘' 카테고리의 다른 글
| [프로그래머스/Java] Lv.2 소수 찾기 (1) | 2025.08.16 |
|---|---|
| [프로그래머스/Java] Lv.1 기사단원의 무기 (3) | 2025.08.05 |
| [프로그래머스/Java] Lv.1 과일 장수 (1) | 2025.08.01 |
| [프로그래머스/Java] Lv.1 옹알이(2) (4) | 2025.07.29 |
| [프로그래머스/Java] 의상 Lv.2 (2) | 2025.07.09 |