프로그래머스 - 외계어 사전

남궁진 (jinvicky)·2026년 4월 8일

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/120869

  • dicspell 모두 중복된 원소를 갖지 않는다.
  • 1 ≤ dic의 크기 ≤ 10
  • 1 ≤ dic의 원소의 길이 ≤ 10 (규모가 작음을 알 수 있었다)

Solution


이중 for문을 쓰는 것을 두려워하면 안된다!
처음에 멋도 모르고 hashSet으로 최적화되나 식으로 시작했다가 결국 for문과 똑같이 사용하고 있음을 알고 머쓱하게 삭제했다.

dic[]의 모든 요소들을 포함해야 하므로 all 이라는 변수를 flag로 사용했다.

Point

spell에서 하나라도 dic을 포함하지 않으면 break;로 빠져나와야 한다.
그렇지 않으면 항상 1을 반환하는 문제가 발생하기 때문이다.

Code


import java.util.*;
class Solution {
    public int solution(String[] spell, String[] dic) {
        for(int i = 0; i < dic.length; i++) {
            String item = dic[i];
            
            boolean all = false;
            for(String s : spell) {
                if(item.contains(s)) {
                    all = true;
                }else {
                    all = false;
                    break; // 핵심 포인트
                }
            }
            if(all) return 1;
        }
        return 2;
    }
}

지금 내 코드도 정답이지만 성능 말고 문장 측면에서만 gpt한테 다듬어 달라고 했다.

import java.util.*;

class Solution {
    public int solution(String[] spell, String[] dic) {
        for (String item : dic) {
            boolean all = true;
            
            for (String s : spell) {
                if (!item.contains(s)) {
                    all = false;
                    break;
                }
            }
            
            if (all) return 1;
        }
        return 2;
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글