ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스] 모음사전
    개발 공부/알고리즘 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를 더해줌  
                  +31

    AAE => 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
Designed by Tistory.