본문 바로가기
개발로그/알고리즘

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

by 쩜징 2023. 7. 11.

프로그래머스 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;
    }
}

 

반응형

댓글