-
[프로그래머스] 모음사전개발 공부/알고리즘 2023. 3. 30. 00:45
문제 설명
사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다.
단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요.
제한사황
- word의 길이는 1 이상 5 이하입니다.
- word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다.
문제풀이
이 문제도 조건이 그렇게 많지 않으니 완전탐색을 모방항 노가다로 풀었다
단어를 앞에부터 확인해주면서 순서를 플러스 해주었다.
만약 맨앞이 A면 +1
E라면 A가 고정일때 모든 경우의수를 다 거친 후엔나 E가 나올수 있으므로 순서를 그 경우의 수만큼 더해준다.
경우의수를 구하는 방법은 사진으로 첨부했다.
만약 AAIE의 순서가 궁금하다면
A => +1
AA => +1
AAA => I가 아니므로 AAA고정으로 경우의수 31를 더해줌
+31AAE => I가 아니므로 AAE고정으로 경우의수 31을 더해줌
+31
AAI => I가 맞으므로 +1
AAIA => E가 아니므로 AAIA고정으로 경우의수 6을 더해줌
+6
AAIE => E가 맞으므로 +1
총 72
31 function solution(word) { var answer = 0; //모음 const vowelWord = ['A', 'E', 'I', 'O', 'U']; //단어를 하나씩 나눴다 const word_arr = word.split(""); //단어 길이 만큼 반복 for (let i = 0; i < word_arr.length; i++) { //모음 개수(5개) 만큼 반복 for (let j = 0; j < vowelWord.length; j++) { //만약 일치한다면 순서 하나 더하고 다음 단어를 체크 if (word_arr[i] === vowelWord[j]) { answer++; break; } //다르다면 각 자리에 맞게 순서를 더해줌 switch (i) { case 0: answer += 781; break; case 1: answer += 156; break; case 2: answer += 31; break; case 3: answer += 6; break; default: //case 4 answer += 1; break; } } } console.log(answer); return answer; } solution('A'); //1 solution('AAAAE'); //6 solution('I'); //1563 solution('EIO'); //1189
'개발 공부 > 알고리즘' 카테고리의 다른 글
[완전탐색] 모의고사 (0) 2023.03.30 [프로그래머스] 카펫 (0) 2023.03.23