🔸 문제 설명
머쓱이는 모스부호로 쓰인 편지를 받았습니다.
이걸 해석해서 알파벳 소문자로 바꾸는 프로그램을 작성해야 해요.
모스부호는 공백으로 나눠져 있으며, 아래와 같이 알파벳과 매칭됩니다.
예:
.... = h
. = e
.-.. = l
--- = o
입력: ".... . .-.. .-.. ---"
출력: "hello"
🔸 입출력 예
letter | 결과 |
".... . .-.. .-.. ---" | "hello" |
".--. -.-- - .... --- -." | "python" |
✅ 내가 처음에 헷갈렸던 부분
❓ "split" 결과를 String으로 받음
String morseArr = letter.split(" "); // ❌
→ split은 배열이 반환되기 때문에 이렇게 해야 함.
String[] morseArr = letter.split(" "); // ✅
✅ 최종 정답 코드
import java.util.*;
class Solution {
public String solution(String letter) {
String answer = "";
Map<String, String> morseMap = new HashMap<>();
morseMap.put(".-", "a"); morseMap.put("-...", "b"); morseMap.put("-.-.", "c");
morseMap.put("-..", "d"); morseMap.put(".", "e"); morseMap.put("..-.", "f");
morseMap.put("--.", "g"); morseMap.put("....", "h"); morseMap.put("..", "i");
morseMap.put(".---", "j"); morseMap.put("-.-", "k"); morseMap.put(".-..", "l");
morseMap.put("--", "m"); morseMap.put("-.", "n"); morseMap.put("---", "o");
morseMap.put(".--.", "p"); morseMap.put("--.-", "q"); morseMap.put(".-.", "r");
morseMap.put("...", "s"); morseMap.put("-", "t"); morseMap.put("..-", "u");
morseMap.put("...-", "v"); morseMap.put(".--", "w"); morseMap.put("-..-", "x");
morseMap.put("-.--", "y"); morseMap.put("--..", "z");
String[] morseArr = letter.split(" ");
for (String code : morseArr) {
answer += morseMap.get(code);
}
return answer;
}
}
🧠 핵심 개념 요약
개념 | 설명 |
Map<String, String> | "모스부호 → 알파벳" 매핑 딕셔너리 |
.split(" ") | 문자열을 공백 기준으로 나눠서 배열로 반환 |
map.get(key) | key로부터 알파벳을 찾아옴 |
문자열 비교 | "==" ❌, .equals() 또는 Map.get() ✅ |
'코딩테스트' 카테고리의 다른 글
[코딩테스트 입문] 대문자와 소문자 (0) | 2025.04.23 |
---|---|
[코딩테스트 입문] 구슬을 나누는 경우의 수 (nCr) ★★★ (0) | 2025.04.23 |
[코딩테스트 입문] 진료 순서 정하기 ★ (0) | 2025.04.23 |
[코딩테스트 입문] 외계행성의 나이 ★ (0) | 2025.04.23 |
[코딩테스트 입문] 최댓값 만들기 (2) ★ (1) | 2025.04.22 |