본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 외계어 사전

728x90

코드 힌트

  1. spell 배열의 문자 조합:
    • spell 배열을 일일이 조합해도 좋지만, 사실 중요한 것은 spell 배열에 있는 각 알파벳의 개수입니다.
    • 이를 위해 new int[26] 배열을 사용하여 알파벳의 개수를 세고, 이를 기반으로 다른 단어와 비교할 수 있습니다.
  2. dic 배열의 각 단어에서 알파벳 개수 카운트:
    • spell에서 사용한 것과 동일한 방식으로, dic 배열의 각 단어에서도 알파벳의 개수를 카운트합니다.
    • 주의할 점은 각 단어를 비교할 때마다, 카운트 배열을 초기화해야 한다는 것입니다. 그렇지 않으면 이전 단어의 알파벳 개수가 남아 있을 수 있습니다.
  3. 배열 비교하기:
    • 두 배열의 알파벳 개수를 비교할 때, 직접 for 문을 작성할 수도 있지만, Java에서 제공하는 Arrays.equals() 메소드를 사용하는 것이 더 간단하고 효율적입니다. 이 메소드는 두 배열이 동일한지를 쉽게 비교할 수 있게 해줍니다.

 


정답은 더보기 클릭

더보기
import java.util.*;

class Solution {
    public int solution(String[] spell, String[] dic) {
        // 'spell' 배열의 각 알파벳 개수를 저장할 배열
        int[] spellCount = new int[26];
        // 사전의 단어마다 알파벳 개수를 저장할 배열
        int[] dicCount;
        
        // spell 배열을 문자열로 합친 후, 각 알파벳의 개수를 카운트
        for (char c : String.join("", spell).toCharArray()) {
            spellCount[c - 'a']++;
        }
        
        // 사전의 각 단어를 순회하며 알파벳 개수를 비교
        for (String word : dic) {
            // 각 단어의 알파벳 개수를 카운트하기 위한 배열 초기화
            dicCount = new int[26];
            for (char c : word.toCharArray()) {
                dicCount[c - 'a']++;
            }
            // spellCount와 dicCount가 동일하면 일치하는 단어이므로 1을 반환
            if (Arrays.equals(spellCount, dicCount)) {
                return 1;
            }
        }
        
        // 일치하는 단어가 없으면 2를 반환
        return 2;
    }
}
728x90