728x90
코드 힌트
문제 이해:
- 입력으로 Morse 코드로 인코딩된 문자열이 주어집니다. 이를 알파벳으로 변환해야 합니다. Morse 코드는 공백으로 구분된 문자열로 제공되며, 각 Morse 코드가 대응하는 알파벳으로 변환되어야 합니다.
HashMap 사용:
- 다른 자료구조를 사용할 수도 있지만, HashMap을 연습하기에 좋은 문제입니다. HashMap은 데이터를 키-값 쌍으로 저장할 수 있는 데이터 구조입니다. 이 문제에서는 Morse 코드 문자열을 키로, 대응하는 알파벳을 값으로 저장하면 변환 작업을 빠르게 수행할 수 있습니다.
- HashMap을 사용하면 Morse 코드에서 알파벳을 찾는 과정이 빠르고 효율적이므로, HashMap 사용을 강력히 추천합니다.
HashMap에 저장할 Morse 코드 배열:
String[] morseArr = {
".- a", "-... b", "-.-. c", "-.. d", ". e", "..-. f",
"--. g", ".... h", ".. i", ".--- j", "-.- k", ".-.. l",
"-- m", "-. n", "--- o", ".--. p", "--.- q", ".-. r",
"... s", "- t", "..- u", "...- v", ".-- w", "-..- x",
"-.-- y", "--.. z"
};
- 이 배열은 Morse 코드와 알파벳의 매핑을 제공합니다. 각 요소는 Morse 코드와 대응하는 알파벳을 공백으로 구분하여 저장하고 있습니다. 이 배열을 사용하여 HashMap을 초기화합니다.
Morse 코드와 알파벳 매핑:
- 먼저, morseArr 배열을 통해 Morse 코드와 알파벳의 매핑을 HashMap에 저장합니다. 배열에서 Morse 코드와 알파벳 쌍을 읽어와서 map.put(key, value)로 저장합니다. 이렇게 하면 Morse 코드에 대한 빠른 검색이 가능해집니다.
Morse 코드 변환:
- 입력된 Morse 코드 문자열을 공백으로 나누어 각 Morse 코드 부분을 처리합니다. 각 Morse 코드를 HashMap에서 검색하여 대응하는 알파벳을 찾고, 이를 결과 문자열에 추가합니다.
StringBuilder 사용:
- 최종 결과 문자열을 만들기 위해 StringBuilder를 사용합니다. 문자열을 반복적으로 수정할 때 StringBuilder는 효율적이며, 성능 상 유리합니다. sb.append(map.get(s))를 사용하여 변환된 알파벳을 결과 문자열에 추가합니다.
정답은 더보기 클릭
더보기
import java.util.*;
class Solution {
public String solution(String letter) {
// 1. Morse 코드와 알파벳의 매핑을 저장할 HashMap 생성
HashMap<String, String> map = new HashMap<>();
// 2. 결과 문자열을 저장할 StringBuilder 초기화
StringBuilder sb = new StringBuilder();
// 3. Morse 코드와 알파벳을 매핑한 배열 정의
String[] morseArr = {
".- a", "-... b", "-.-. c", "-.. d", ". e", "..-. f",
"--. g", ".... h", ".. i", ".--- j", "-.- k", ".-.. l",
"-- m", "-. n", "--- o", ".--. p", "--.- q", ".-. r",
"... s", "- t", "..- u", "...- v", ".-- w", "-..- x",
"-.-- y", "--.. z"
};
// 4. Morse 코드와 알파벳을 HashMap에 저장
for (String morse : morseArr) {
// Morse 코드와 알파벳을 분리
String[] splitMorse = morse.split(" ");
String key = splitMorse[0]; // Morse 코드
String value = splitMorse[1]; // 알파벳
// HashMap에 Morse 코드와 알파벳 매핑 저장
map.put(key, value);
}
// 5. 입력된 Morse 코드 문자열을 공백으로 분리하여 처리
for (String s : letter.split(" ")) {
// HashMap에서 Morse 코드에 해당하는 알파벳을 찾아 결과 문자열에 추가
sb.append(map.get(s));
}
// 6. 최종 결과 문자열 반환
return sb.toString();
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2024.08.14 |
---|---|
[프로그래머스] 팩토리얼 (0) | 2024.08.14 |
[프로그래머스] 진료순서 정하기 (0) | 2024.08.14 |
[프로그래머스] 전국 대회 선발 고사 (0) | 2024.08.13 |
[프로그래머스] 그림 확대 (0) | 2024.08.13 |