[알고리즘]- 프로그래머스 Level2

이창희·2022년 6월 20일
0

알고리즘

목록 보기
1/7

https://programmers.co.kr/learn/courses/30/lessons/84512

🔒문제

사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 반환하면 됩니다.

제한사항

  • word의 길이는 1 이상 5 이하입니다.
  • word는 알파벳 대문자 'A','E','I','O','U'로만 이루어져 있습니다.

입출력 예시

🔑풀이

정해진 규칙을 찾기위해 직접 손으로 써내려가 보았다.

1   A
2   AA
3   AAA
4   AAAA
5   AAAAA
6   AAAAE
7   AAAAI
.
.
.
10  AAAE
11  AAAEA
.
.
.
16  AAAI

.
.
.
34  AAE

써내려본 결과

5번째 자리에서 문자가 바뀌는 경우 : 1씩 증가
4번째 자리에서 문자가 바뀌는 경우 : 6씩 증가
3번째 자리에서 문자가 바뀌는 경우 : 31씩 증가
. . .

이를 함수로 풀어내어보면??

x 가 0이 아닐 때 : f(x) = f(x - 1) + 5^x

f(0) = 1
f(1) = 1 + 5^1 = 6
f(2) = 6 + 5^2 = 31
f(3) = 31 + 5^3 = 156
f(4) = 156 + 5^4 = 781

위와 같은식이 생긴다.

이를 각 자릿수에대한 증가율과 대치된 문자의 값을 곱한 다음 answer에 더해주면 된다.

💻코드

class Solution {

    static final String Alpabet = "AEIOU";
    static final int[] RATE_OF_INCREASE = {781, 156, 31, 6, 1};

    public int solution(String word) {
        int answer = word.length();

        for (int i = 0; i < word.length(); i++) {
            answer += (RATE_OF_INCREASE[i] * Alpabet.indexOf(word.charAt(i)));
        }

        return answer;
    }

}
profile
백앤드 개발자를 꿈꾸는 개발자 지망생입니다.

0개의 댓글