본문 바로가기
Java/알고리즘

[Java] 프로그래머스 Lv2 - 모음 사전

by WaterPunch 2024. 11. 3.

public class Solution {

    public int solution(String word) {
        String[] vowel = {"","A", "E", "I", "O", "U"};

	// 제시된 모음들을 
        //A -> 1
        //E -> 2
        //I -> 3
        //O -> 4
        //U -> 5 로 변환
        int wordToNumber = 0;
        List<String> list = Arrays.asList(vowel);
        for(int i=0; i<word.length(); i++) {
            int wordIndex = list.indexOf(String.valueOf(word.charAt(i)));
            wordToNumber = (wordToNumber * 10) + (wordIndex);
        }
        int index = 1;
        int answer = 1;

		// 제시된 모음이 나올 때 까지 계속 검색
        while(wordToNumber != index) {
        	// 모음이 5자리가 아닐 경우
            // 1111(AAAA)
            if(index / 10000 == 0) {
            	// 5자리로 만들어준뒤 A 붙이기 (
                // 1111(AAAA) -> 11111(AAAAA)
                index = (index * 10) + 1;
                answer++;
            } 
            // 5자리일 경우
            else {
                index = fiveToZero(index);
                answer++;
            }
        }

        return answer;
    }

	// 5자리 일 경우 실행
    private static int fiveToZero(int index) {
    	// 맨 끝자리가 U일 경우
        // 4자리로 변환
        // Ex) AAAAU -> AAAA
        if(index % 10 == 5) {
            index /= 10;
            index = fiveToZero(index);
            return index;
        }
        
        // U를 제외한 끝자리의 모음이라면
        // + 1을 해준다
        // ex) 11112(AAAAE) -> 11113(AAAAI)
        return index + 1;
    }
}

 

반응형

댓글