외계어 사전 [CT]

성배·2025년 1월 24일
0

코딩테스트

목록 보기
36/53

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

생각한 풀이
1. dic 배열에 있는 단어마다 spell에 있는 알파벳을 contain() 으로 확인
2. 한번씩만 사용해야하니 cnt 만들어서 spell의 길이랑 같은지 비교


class Solution {
    public int solution(String[] spell, String[] dic) {
        int answer = 2;
        
        for(int i=0;i<dic.length;i++){
            int cnt=0;
            for(int j=0;j<spell.length;j++){
                if(dic[i].contains(spell[j])){
                    cnt++;
                }
            }
            if(cnt==spell.length){
                    answer=1;
                    break;
           }
        }
        return answer;
    }
}

🐴 풀이
1. answer의 기본 값을 2로 설정
2. for문 내부에 cnt 생성하고 dic[i]의 단어가 spell의 알파벳을 포함한다면 cnt++
3. 두번째 for문이 끝나면 cnt 값이 spell의 길이와 같은지 비교(중복하는 알파벳을 없으니 모두 한번씩 사용했으면 spell의 길이와 동일할 것이다)


다른 사람들 풀이 중에 마음에 드는 풀이가 참고해서 다시 풀어봤다

import java.util.Arrays;
class Solution {
    public int solution(String[] spell, String[] dic) {
        int answer = 2;
        
        Arrays.sort(spell);
        String alp=String.join("",spell);
        for(String s: dic){
            char arr[]= s.toCharArray();
            Arrays.sort(arr);
            String word = new String(arr);
            
            if( alp.equals(word)){
                answer=1;
                break;
            }
        }
        
        return answer;
    }
}

🐴 풀이
1. 주요 생각은 spell과 dic을 모두 정렬해 동일한지 비교하는 방법이다
2. spell을 정렬하고 ""을 기준으로 알파벳을 합친다
3. for문을 돌면서 단어들을 정렬하고 해당 값이 alp과 같은지 확인한다

0개의 댓글