PS/Programmers

[Programmers] Level 2 : 모음사전

뱃싸공 2022. 12. 8. 14:14
 

프로그래머스

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

programmers.co.kr

A, E, I, O, U 순서로 길이가 5이하인 문자열을 만들 수 있다고 한다. 이때 특정 문자열이 몇번째 문자열인지 구해야한다.

제한이 매우 작기에 별도의 규칙을 찾을 필요는 없고, 직접 다 구하는 브루트포스를 돌려주는게 가장 간단해 보인다. 그리고 브루트포스를 돌렸을때 시간복잡도는 O(5^5) 정도 소요된다.

import java.util.*;

class Solution {
    
    private List<String> words = List.of("A", "E", "I", "O", "U");
    private Integer count = 0;
    private Boolean flag = false;
    public int solution(String word) {
        dfs("", word);
        return count-1;
    }
    
    public void dfs(String start, String end) {
        if(start.length() > 5 || flag) return;
        if(start.equals(end)) flag = true;
        count++;
        for(String s : words) {
            dfs(start+s, end);
        }
    }
}