[프로그래머스 - 자바(JAVA)] 41 : 모음 사전

서예진·2024년 3월 21일
0
post-custom-banner

목차

모음 사전


모음 사전 : Lv.2

▼ 문제

출처 : 프로그래머스 코딩테스트 연습 완전탐색 모음사전

▼ 내 풀이

  • 다섯번째 문자가 바뀔때는 +1이 된다.
  • 네번째 문자가 바뀔 때는 +6이 된다. -> 다섯번째 문자의 경우의 수를 모두 돌고 네번째 문자가 바뀌기 때문에 다섯번째 문자가 바뀌는 경우의 수 5 + 네번째 문자가 바뀐 경우 +1
    • 예를 들어, AAAE의 경우 AAAA(4)에서 AAAAA, AAAAE, AAAAI, AAAAO, AAAAU을 다 거친 후 AAAE가 되기때문에 4 + 5 + 1이다.
  • 즉, 다섯번째자리의 간격은 1, 네번째자리의 간격은 6, 세번째 간격의 거리는 31이고 다시 생각해보면,
    • 다섯번째 자리 : 1
    • 네번째 자리 : 1 + 5
    • 세번째 자리 : 1 + 5 + 25
    • 두번째 자리 : 1 + 5 + 25 + 125
    • 첫번째 자리 : 1 + 5 + 25 + 125 + 625 를 의미한다.
  • 따라서, "I"의 경우, 첫번째 자리이며, 모음의 세번째이기 때문에
    • 2 * 781 + 1 = 1563이다.
  • 이 때, 주의할 점은 문자열의 길이만큼 1을 더해줘야 한다.
    • 순서를 구하고자하는 문자열이 "I"이면 1을 더하고, "AAE"이면 3을 더해야한다.
    • 즉, A로만 이루어진 경우를 고려해야한다.
import java.util.*;
class Solution {
    public int solution(String word) {
        int answer = 0;
        int length = word.length();
        int[] nums = {781, 156, 31, 6, 1};
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 0);
        map.put("E", 1);
        map.put("I", 2);
        map.put("O", 3);
        map.put("U", 4);
        
        String[] words = word.split("");
        for(int i = 0; i < words.length; i++) {
            answer += 1 + map.get(words[i])*nums[i];
        }
        
        return answer;
    }
}

profile
안녕하세요
post-custom-banner

0개의 댓글