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

hyeok ryu·2024년 1월 31일
0

algorithm

목록 보기
7/8

문제

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


입력

  • word

출력

단어가 사전에서 몇 번째 단어인지


풀이

제한조건

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

접근방법

길이가 최대 5인 단어의 사전이 있는것이므로, 단순하게 접근한다.

사전을 모두 구축하고, 사전순으로 정렬 후, 원하는 단어가 몇 번째인지 찾는다.

정렬된 사전을 만들기 위해서 TreeSet을 구현체로 사용하였다.
앞에서 부터 순서대로 확인하면서, 원하는 단어가 나올 때까지 넘기며 찾는다.


코드

import java.util.*;

class Solution {
    int size;
    Set<String> set;
    String[] arr = {"A", "E", "I", "O", "U"};
    public int solution(String word) {
        int answer = 0;
        set = new TreeSet();
        
        // 사전 만들기
        for(int i = 0 ; i < 5; ++i)
            makeWord(arr[i], 1);
        
        // 사전의 앞에서부터 원하는 단어 찾기
        int count = 0;
        for(String s : set){
            count++;
            if(s.equals(word))
                return count;
        }
        return answer;
    }
    
    public void makeWord(String base, int depth){
        set.add(base);
        if(depth == 5){
            return;
        }
        for(int i = 0 ; i < 5; ++i)
            makeWord(base + arr[i], depth + 1);
    }
}

0개의 댓글