본문 바로가기

알고리즘

[알고리즘/Programmers] LV2. 모음사전 (Java)

728x90
반응형

 

오늘의 학습 키워드

  • 완전 탐색, DFS

오늘의 회고

1. 문제

문제 URL

 

프로그래머스

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

programmers.co.kr

 

2. 해결 방안

/** 84512
 * 코딩테스트 연습 > 완전탐색 > 모음사전
 */
public class pgms_topkit_7_X {

    static List<String> list;
    static String[] words = {"A", "E", "I", "O", "U"};

    public static void main(String[] args) {
        list = new ArrayList<>();
        System.out.println(solution("AAAAE"));
    }

    public static int solution(String word) {
        int answer = 0;
        dfs("", 0);
        for(int i=0; i<list.size(); i++) {
            if(word.equals(list.get(i))) {
                answer = i;
                break;
            }
        }

        return answer;
    }

    public static void dfs(String str, int len) {
        list.add(str);
        if(len == words.length) return;
        for(int i=0; i<words.length; i++) {
            dfs(str + words[i], len+1);
        }
    }
}
  • 모든 경우의 수를 다 조합해서 리스트에 담아두고, 리스트에서 일치하는 단어의 인덱스를 꺼내는 완전탐색 방법이다.
  • 문자를 요구사항에 맞게 조합하는 dfs 함수를 만들어 사용한다.

3. 피드백

  • dfs를 만들어야 하는건 알겠는데 문자를 어떻게 조합시켜야할지 안떠올랐던 문제. 풀고나면 어려운게 아니니 익숙해지자.

참고

프로그래머스 모음사전 (Java,자바)

728x90
반응형