[프로그래머스] 모음사전 - JavaScript
Algorithm
|
2024-09-22
모음사전
프로그래머스 Level 2
📚 문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
✅ 제한 조건
word의 길이는 1 이상 5 이하입니다.
word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
📜 입출력 예
word result "AAAAE"
6 "AAAE"
10 "I"
1563 "EIO"
1189
입출력 예 #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번째 단어입니다.
📝 작성 코드
알파벳 모음을 담은 배열 alphabet
과 모음으로 만든 단어를 저장할 dict
배열을 선언한다.
문자열 str
과 문자열의 길이 n
를 매개변수로 받는 재귀 함수 recursion
으로 모음으로 구성된 문자열을 조합해서 dict
배열에 저장한다. 재귀적으로 생성된 문자열은 길이가 5 이하일 때만 dict
배열에 추가된다.
recursion
이 종료되면 dict
배열을 사전 순으로 정렬한다. JavaScript는 사전 순으로 정렬되기 때문에 알파벳 순서로 정렬된다.
정렬된
dict
배열에서 입력받은 word가 몇 번째에 있는지 indexOf 메서드를 사용하여 찾은 후 반환한다.
⏰ 걸린 시간
테스트 1 〉 통과 (0.96ms, 33.7MB) 테스트 2 〉 통과 (1.24ms, 33.7MB) 테스트 3 〉 통과 (1.15ms, 33.7MB) 테스트 4 〉 통과 (1.19ms, 33.6MB) 테스트 5 〉 통과 (1.13ms, 33.6MB) 테스트 6 〉 통과 (0.65ms, 33.7MB) 테스트 7 〉 통과 (0.71ms, 33.6MB) 테스트 8 〉 통과 (0.68ms, 33.6MB) 테스트 9 〉 통과 (0.63ms, 33.7MB) 테스트 10 〉 통과 (1.08ms, 33.6MB) 테스트 11 〉 통과 (0.63ms, 33.6MB) 테스트 12 〉 통과 (0.70ms, 33.8MB) 테스트 13 〉 통과 (0.66ms, 33.6MB) 테스트 14 〉 통과 (0.87ms, 33.6MB) 테스트 15 〉 통과 (0.66ms, 33.7MB) 테스트 16 〉 통과 (0.65ms, 33.6MB) 테스트 17 〉 통과 (0.67ms, 33.7MB) 테스트 18 〉 통과 (0.65ms, 33.6MB) 테스트 19 〉 통과 (0.65ms, 33.7MB) 테스트 20 〉 통과 (0.67ms, 33.6MB) 테스트 21 〉 통과 (0.62ms, 33.7MB) 테스트 22 〉 통과 (0.63ms, 33.6MB) 테스트 23 〉 통과 (0.63ms, 33.6MB) 테스트 24 〉 통과 (1.09ms, 33.6MB) 테스트 25 〉 통과 (1.12ms, 33.6MB) 테스트 26 〉 통과 (0.70ms, 33.7MB) 테스트 27 〉 통과 (0.64ms, 33.6MB) 테스트 28 〉 통과 (0.70ms, 33.7MB) 테스트 29 〉 통과 (0.67ms, 33.6MB) 테스트 30 〉 통과 (0.65ms, 33.6MB) 테스트 31 〉 통과 (1.11ms, 33.6MB) 테스트 32 〉 통과 (0.63ms, 33.7MB) 테스트 33 〉 통과 (0.64ms, 33.7MB) 테스트 34 〉 통과 (0.64ms, 33.6MB) 테스트 35 〉 통과 (0.67ms, 33.6MB) 테스트 36 〉 통과 (0.63ms, 33.6MB) 테스트 37 〉 통과 (0.67ms, 33.8MB) 테스트 38 〉 통과 (0.90ms, 33.6MB) 테스트 39 〉 통과 (0.63ms, 33.7MB)