[프로그래머스] 절대 외부 IDE를 써선 안돼/Java

[lv2] 모음사전

SH3542 2024. 10. 15. 02:58

https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=java

 

A, E, I, O, U 5개의 모음으로 (각 모음을 사용하지 않거나, 1번 이상 사용하여) 길이 5이하의 단어를 만드는 문제다.

이후 정렬하여 몇 번째 단어인지 출력하면 된다.

 

1번째 는 A고 3095번째 단어는 UUUU였다. 코드에선 빈 문자열 ""가 0번째 인덱스를 채우면서 A가 1번째가 됐다.

xxEIO와 xEIOx같은 경우는 문제에서 동일한 단어로 취급되므로 정확한 경우의 수를 구하긴 어려웠다. 그래서 set으로 검산하고 제출했다.

 

import java.util.*;

class Solution {
    public int solution(String word) {

        List<String> list = new ArrayList<>();

        char[] arr = {'A','E','I','O','U'};

        reclu(arr, list, "", 0);
        Collections.sort(list);

        // Set<String> tmp = new HashSet<>();
        // list.stream().forEach(v -> tmp.add(v));
        // System.out.println(tmp.size()); //  3906
        // System.out.println(list.size()); //     3906

        return list.indexOf(word);
    }

    public static void reclu(char[] arr, List<String> list, String s, int dep) {

        list.add(s);
        
        if(dep == 5) return;
        
        for(int i=0; i<5; i++) {
            reclu(arr, list, s+arr[i], dep+1);
        }
    }
}

'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글

[lv3] 야근 지수  (0) 2024.11.04
[lv3] 입국심사  (0) 2024.10.19
[lv2] 전력망을 둘로 나누기  (1) 2024.10.16
[lv2] 등굣길  (0) 2024.10.15
[lv3] 가장 먼 노드  (2) 2024.10.11