JAVA/프로그래머스 코딩테스트 입문

[프로그래머스, LV.0] 외계어 사전

sundori 2024. 12. 12. 05:37

목차

    문제 설명

    PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.


     

    제한사항

    • spell과 dic의 원소는 알파벳 소문자로만 이루어져있습니다.
    • 2 ≤ spell의 크기 ≤ 10
    • spell의 원소의 길이는 1입니다.
    • 1 ≤ dic의 크기 ≤ 10
    • 1 ≤ dic의 원소의 길이 ≤ 10
    • spell의 원소를 모두 사용해 단어를 만들어야 합니다.
    • spell의 원소를 모두 사용해 만들 수 있는 단어는 dic에 두 개 이상 존재하지 않습니다.
    • dic과 spell 모두 중복된 원소를 갖지 않습니다.
    spell dic result
    ["p", "o", "s"] ["sod", "eocd", "qixm", "adio", "soo"] 2
    ["z", "d", "x"] ["def", "dww", "dzx", "loveaw"] 1
    ["s", "o", "m", "d"] ["moos", "dzx", "smm", "sunmmo", "som"] 2

     

    import java.util.Arrays;
    
    class Solution {
        public int solution(String[] spell, String[] dic) {
            // spell 배열의 원소를 정렬하여 하나의 문자열로 변환
            char[] spellChars = String.join("", spell).toCharArray();
            Arrays.sort(spellChars);
            String sortedSpell = new String(spellChars);
    
            // dic 배열을 순회하며 spell의 조합이 포함된 단어가 있는지 확인
            for (String word : dic) {
                char[] wordChars = word.toCharArray();
                Arrays.sort(wordChars);
                String sortedWord = new String(wordChars);
    
                if (sortedSpell.equals(sortedWord)) {
                    return 1; // 존재하면 1 반환
                }
            }
            return 2; // 존재하지 않으면 2 반환
        }
    }

    코드 설명

    • spell 배열에 담긴 알파벳을 정렬하여 하나의 기준 문자열로 만든다.
    • dic 배열에 있는 각 단어를 정렬한 후, spell과 동일한 조합인지 비교한다.
    • 동일한 단어가 존재하면 1을 반환하고, 없으면 2를 반환한다.
    728x90