Algorithm

[Javascript] 프로그래머스 - 모음 사전

합주기 2025. 1. 22. 01:34

🧾 목차

1. 문제 설명

2. 문제 풀이

3. 정답 코드


1. 문제 설명

알파벳 모음 ('A', 'E', 'I', 'O', 'U') 만을 사용하여 만들 수 있는 길이 5 이하의 모든 단어 조합 중

입력 문자열(word)은 몇 번 째 인덱스인지 리턴하는 문제이다.

 

입출력 

 

제한 사항

만들 수 있는 단어의 최대 길이는 5 이하이다. 

👉 조합을 구현할 함수에서, 현재 단어의 길이가 5다. => 즉시 리턴해야함


2. 문제 풀이

1) 변수 선언

index 변수는 조합을 만들어낼 때마다 1씩 증가를 시킬 예정이다.

 

2) 조합 함수

조합 함수를 구현한다.

 

Key point

이 때, 얼리 리턴 조건은 다음과 같은데,

  1) 원하는 알파벳이 나왔을 경우 => 정답

  2) 조합한 문자열이 5글자일 경우 => 제한 조건 (1<= word <= 5) 

 

 이 경우를 제외하고는, 각 모음을 하나씩 추가하며 모든 조합을 만들어내면 된다.


3. 정답 코드

function solution(word) {
    var answer = 0;
    
    var aeiou = ['A', 'E', 'I', 'O', 'U'];
    
    var index = 0; // 사전순으로 몇번 째 인지
    
    function combi(cur) {
        if (cur === word) { // 원하는 알파벳이 나왔을 경우, 해당 인덱스를 저장
            answer = index;
            return;
        }
        
        if (cur.length === aeiou.length) { // 길이가 5 이상일 경우, 더이상 알파벳을 추가하지 않음
            return;
        }
        
        // 알파벳 모음을 순회하며, 
        for (let i = 0; i < aeiou.length; i++) {
            index += 1 // 인덱스 증가
            combi(cur + aeiou[i]); // 알파벳 추가
        }
    }
    
    combi('');
    
    return answer;
}

 

'Algorithm' 카테고리의 다른 글

[Javascript] 프로그래머스 - 타겟 넘버  (2) 2025.01.28
[Javascript] 프로그래머스 - 베스트 앨범  (0) 2025.01.25
[Javascript] 소수 찾기  (2) 2025.01.21
[Javascript] 더 맵게  (0) 2025.01.11
[Javascript] 가장 큰 수  (0) 2025.01.11