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

·2023년 2월 10일
0

프로그래머스

목록 보기
38/59

📌 문제 설명

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

📌 제한 사항

  • spelldic의 원소는 알파벳 소문자로만 이루어져 있습니다.
  • 2 ≤ spell의 크기 ≤ 10
  • spell의 원소의 길이는 1입니다.
  • 1 ≤ dic의 크기 ≤ 10
  • 1 ≤ dic의 원소의 길이 ≤ 10
  • spell의 원소를 모두 사용해 단어를 만들어야 합니다.
  • spell의 원소를 모두 사용해 만들 수 있는 단어는 dic에 두 개 이상 존재하지 않습니다.
  • dicspell 모두 중복된 원소를 갖지 않습니다.

📌 입출력 예

spelldicresult
["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

📌 코드

class Solution {
    public int solution(String[] spell, String[] dic) {
        int answer = 0, sum= 0;
        int []count = new int[spell.length];
        for(int i = 0; i < dic.length; i++){
            for(int j = 0; j < dic[i].length(); j++){
                for(int k = 0; k < spell.length; k++){
                    if(dic[i].substring(j, j+1).equals(spell[k]))
                        count[k]++;
                }
            }
            for(int j = 0; j < count.length; j++){
                if(count[j] == 1)
                    sum += count[j];
                count[j] = 0;
            }
            if(sum == count.length) {
                answer = 1;
                break;
            }
            else answer = 2;
            sum = 0;
        }
        return answer;
    }
}

너무 for loop 지옥인 코드네요... 😂

📌 문제 해결 과정

💡 dic에 들어 있는 단어를 한 문자씩 잘라서 그 문자가 spell에 있는 문자와 같다면 count에서 해당 spell과 같은 인덱스의 값을 하나 올려 준다

💡 카운팅이 다 끝난 후, count 배열의 길이 만큼 반복문을 돌려 count의 모든 인덱스의 원소가 1이라면 sum의 최종 값은 count의 길이와 똑같을 것이므로 answer을 1로 설정해 주고 바로 반복문을 탈출해 준다 count의 길이와 다를 땐 count의 모든 원소가 1이 아니라는 소리이므로 answer을 2로 설정해 주고 다음 반복을 이어나가게 한다

profile
공부는 많은 양을 하진 않더라도 꾸준히 매일 하기

0개의 댓글