프로그래머스 Lv.0 모스부호(1)

주어진 모스부호를 해독하는 문제!
morse = {
'.-':'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'
}
letter가 매개변수로 주어질 때, letter를 소문자로 바꾼 문자열을 return하라.
letter는 공백으로 나누어져 있고,
공백이 두 개 이상 연속으로 존재하거나 앞 뒤로 공백이 존재하지 않는다.
** 풀이방법
먼저, 키와 값을 설정하는 HashMap을 떠올렸다.
키=모스부호 /값=각 모스부호에 대응하는 소문자를 map에 저장시키고
HashMap<String, Character> map = new HashMap<>();
map.put(".-", 'a'); map.put("-.", 'n');
map.put("-...", 'b'); map.put("---", 'o');
map.put("-.-.", 'c'); map.put(".--.", 'p');
map.put("-..", 'd'); map.put("--.-", 'q');
map.put(".", 'e'); map.put(".-.", 'r');
map.put("..-.", 'f'); map.put("...", 's');
map.put("--.", 'g'); map.put("-", 't');
map.put("....", 'h'); map.put("..-", 'u');
map.put("..", 'i'); map.put("...-", 'v');
map.put(".---", 'j'); map.put(".--", 'w');
map.put("-.-", 'k'); map.put("-..-", 'x');
map.put(".-..",'l'); map.put("-.--", 'y');
map.put("--",'m'); map.put("--..", 'z');
letter를 공백으로 나누어 배열에 담았다.
String[] res = letter.split(" ");
res배열의 반복문을 돌면서 res[i]과 같은 값의 키가 존재한다면
value값(소문자)을 가져와서 answer에 문자를 하나씩 합쳐 완성한다!
for (int i=0; i<res.length; i++) {
if (map.containsKey(res[i]))
answer+=map.get(res[i]);
}
return answer;
<> 전체코드 </>
import java.util.*;
class Solution {
public String solution(String letter) {
String answer = "";
HashMap<String, Character> map = new HashMap<>();
map.put(".-", 'a'); map.put("-.", 'n');
map.put("-...", 'b'); map.put("---", 'o');
map.put("-.-.", 'c'); map.put(".--.", 'p');
map.put("-..", 'd'); map.put("--.-", 'q');
map.put(".", 'e'); map.put(".-.", 'r');
map.put("..-.", 'f'); map.put("...", 's');
map.put("--.", 'g'); map.put("-", 't');
map.put("....", 'h'); map.put("..-", 'u');
map.put("..", 'i'); map.put("...-", 'v');
map.put(".---", 'j'); map.put(".--", 'w');
map.put("-.-", 'k'); map.put("-..-", 'x');
map.put(".-..",'l'); map.put("-.--", 'y');
map.put("--",'m'); map.put("--..", 'z');
String[] res = letter.split(" ");
for (int i=0; i<res.length; i++) {
if (map.containsKey(res[i]))
answer+=map.get(res[i]);
}
return answer;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 외계행성의 나이 (0) | 2023.07.14 |
---|---|
프로그래머스 Lv.0 한 번만 등장한 문자 (0) | 2023.07.13 |
프로그래머스 Lv.1 예산 (0) | 2023.07.12 |
프로그래머스 Lv.0 날짜 비교하기 (0) | 2023.07.10 |
프로그래머스 Lv.1 성격 유형 검사하기 (0) | 2023.07.06 |
댓글