[LeetCode] Unique Morse Code Words

아르당·2026년 2월 25일

LeetCode

목록 보기
172/213
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

국제 모스 부호는 각 문자를 점과 선의 연속으로 매핑하는 표준 인코딩 방식을 정의하며, 그 예는 다음과 같다.

  • 'a'는 ".-"
  • 'b'는 "-..."
  • 'c'는 "-.-."

편의를 위해 영어 알파벳 26개 글자에 대한 전체 표를 아래에 제시한다.
[".-", "-...", "-.-.", "-..", ".", "..-." ,"--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]

각 단어가 각 문자의 모스 부호와 연결하여 표현할 수 있는 문자열 배열 words가 주어진다.

  • 예를 들어, "cab"는 "-.-..--..."와 같이 쓸 수 있는데, 이는 "-.-.", ".-", "-..."를 연결한 것이다. 이러한 연결을 단어의 변형이라고 부를 것이다.

모든 단어들 사이의 서로 다른 변환 횟수를 반환해라.

Example

#1
Input: words = ["gin", "zen", "gig", "msg"]
Output: 2
Explanation: 각 단어의 변환은 아래와 같다.
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."
2개의 다른 변화인 "--...-."과 "--...--."이 있다.

#2
Input: words = ["a"]
Output: 1

Constraints

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 12
  • words[i]는 영어 소문자로 구성된다.

Solved

class Solution {
    public int uniqueMorseRepresentations(String[] words) {
        String[] morse = {".-", "-...", "-.-.", "-..", ".", "..-." ,"--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
        Set<String> set = new HashSet<>();

        for(String word: words){
            StringBuilder sb = new StringBuilder();

            for(char c : word.toCharArray()){
                sb.append(morse[c - 'a']);
            }

            set.add(sb.toString());
        }

        return set.size();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글