관리 메뉴

개발 쥬스

[프로그래머스/Java] 84512 모음사전 본문

알고리즘

[프로그래머스/Java] 84512 모음사전

DevJuice 2024. 8. 22. 16:47
반응형

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/84512

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

🔍 해결 과정

문제의 파라미터에서 word의 최대 길이는 5이므로 시간 초과 고민을 할 필요가 없기 때문에 완전탐색으로 해결하였습니다. 다음과 같은 과정으로 문제를 해결하였습니다.

1️⃣ A부터 UUUUU까지의 가능한 모든 단어의 경우를 하나의 리스트 words 에 담는다.
2️⃣ 모든 단어들이 담긴 리스트 words에 대해 사전순 정렬을 진행한다.
3️⃣ 특정 단어의 순서를 반환한다.

 


✏️ 코드

import java.util.*;

class Solution {
    
    public final char[] alphabets = {'A', 'E', 'I', 'O', 'U'};
    
    public int solution(String word) {
        int answer = 0;
        List<String> words = new ArrayList<>();
        
        for (int m = 1; m <= 5; ++m) {
            permutation(words, m, 0, new StringBuilder());
        }
        
        Collections.sort(words);
                
        return words.indexOf(word) + 1;
    }
    
    public void permutation(List<String> words, final int select, int count, StringBuilder sb) {
        
        if (count == select) {            
            words.add(sb.toString());            
            return;
        }
        
        for (int i = 0; i < 5; ++i) {
            sb.append(alphabets[i]);
            permutation(words, select, count + 1, sb);
            sb.deleteCharAt(sb.length() - 1);
        }
    }
}
반응형