Home P84512. 모음사전
Post
Cancel

P84512. 모음사전

문제

image

제출 코드

  • 사용 알고리즘 : 수학(경우의 수..?)
  • 로직
    1. 주어진 문자열의 각 자리수의 사전순서를 숫자로 저장한 배열 생성

      EX) “AEIOU” → {1, 2, 3, 4, 5}

    2. 앞에 올수 있는 단어들에대하여, 단어 길이별로 그 수를 셈
    3. 앞에 올 단어 길이가 고정되었으니, 앞자리부터 각 자리수 이전에 오는 단어수 세기

      EX) 배열이 { ${a, b, c, d, e}$ }일 경우, 단어길이가 3인 경우의 수는

      $(a-1) * 5 * 5$

      • $1 * (b-1) * 5$
      • $1 * 1 * (c-1)$ 이다.
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
31
class Solution {

    int aeiou(char c) {
      switch(c){
      case 'A': return 1;
      case 'E': return 2;
      case 'I': return 3;
      case 'O': return 4;
      case 'U': return 5;
      }
      return 0;
	  }

    public int solution(String word) {
        int[] words = new int[5];
        for(int i=0; i<5; i++) {
          if(i<word.length()) words[i] = aeiou(word.charAt(i));
          else words[i] = 0;
        }

        int answer = 0;
        for(int i=1; i<=5; i++) { // 단어의 길이
          for(int j=0; j<i; j++) { // 앞자리부터, 각 자리수 이전에 오는 단어수 세기
            if(words[j]==0) continue;
            answer += (words[j]-1) * Math.pow(5, i-j-1);
          }
          if(i<=word.length()) answer++;
        }
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.