본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 모스부호(1)

by 코딩하는 흰둥이 2023. 3. 11.

모스부호 때문에 설명부터 길다....

 

  • 내 풀이
class Solution {
    public String solution(String letter) {
        String answer = "";
        
        
       String[] morse = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
        String[] word = letter.split(" ");


        for (int i = 0; i < word.length; i++) {
            for (int j = 0; j < morse.length; j++) {
                if(word[i].equals(morse[j])){
                    answer += Character.toString('a'+j);
                }
            }
        }
        
        return answer;
    }
}

letter의 글자와 morse의 값을 비교하는 것은 쉬우나 해당 위치의 소문자를 가져오는게 문제다.

Map에 모스부호와 영어를 같이 넣으려다가 코드가 너무 길어지는거 같아서 아스키코드를 찾아서 적용하였다.

 

* 아스키코드 참조

더보기
ASCII 코드문자ASCII 코드문자ASCII 코드문자
33 ! 느낌표 34 " 큰따옴표 35 # 숫자 기호
36 $ 달러 기호 37 % 퍼센트 부호 38 & 앰퍼샌드
39 ' 어포스트로피 40 ( 여는 괄호 41 ) 닫는 괄호
42 * 별표 43 + 더하기 기호 44 , 쉼표
45 - 하이픈 46 . 기간 47 / 슬래시
48 0 49 1 50 2
51 3 52 4 53 5
54 6 55 7 56 8
57 9 58 : 콜론 59 ; 세미콜론
60 < 보다 작음 61 = 등호 62 > 보다 큼-부호
63 ? 물음표 64 @ at 기호 65 A 대문자 a
66 B 대문자 b 67 C 대문자 c 68 D 대문자 d
69 E 대문자 e 70 F 대문자 f 71 G 대문자 g
72 H 대문자 h 73 I 대문자 i 74 J 대문자 j
75 K 대문자 k 76 L 대문자 l 77 M 대문자 m
78 N 대문자 n 79 O 대문자 o 80 P 대문자 p
81 Q 대문자 q 82 R 대문자 r 83 S 대문자 s
84 T 대문자 t 85 U 대문자 u 86 V 대문자 v
87 W 대문자 w 88 X 대문자 x 89 Y 대문자 y
90 Z 대문자 z 91 [ 여는 대괄호 92 \ 백슬래시
93 ] 닫는 대괄호 94 ^ 캐럿 95 _ 밑줄
96 ` 억음 부호 97 a 소문자 a 98 b 소문자 b
99 c 소문자 c 100 d 소문자 d 101 e 소문자 e
102 f 소문자 f 103 g 소문자 g 104 h 소문자 h
105 i 소문자 i 106 j 소문자 j 107 k 소문자 k
108 l 소문자 l 109 m 소문자 m 110 n 소문자 n
111 o 소문자 o 112 p 소문자 p 113 q 소문자 q
114 r 소문자 r 115 s 소문자 s 116 t 소문자 t
117 u 소문자 u 118 v 소문자 v 119 w 소문자 w
120 x 소문자 x 121 y 소문자 y 122 z 소문자 z
123 { 여는 중괄호 124 | 세로 막대 125 } 닫는 중괄호
126 ~ 물결 기호        

 

 

 

  • 다른 사람 풀이
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

class Solution { 
    Map<String, String> dictionary = new HashMap<>() {{
        put(".-", "a");
        put("-...", "b");
        put("-.-.", "c");
        put("-..", "d");
        put(".", "e");
        put("..-.", "f");
        put("--.", "g");
        put("....", "h");
        put("..", "i");
        put(".---", "j");
        put("-.-", "k");
        put(".-..", "l");
        put("--", "m");
        put("-.", "n");
        put("---", "o");
        put(".--.", "p");
        put("--.-", "q");
        put(".-.", "r");
        put("...", "s");
        put("-", "t");
        put("..-", "u");
        put("...-", "v");
        put(".--", "w");
        put("-..-", "x");
        put("-.--", "y");
        put("--..", "z");
    }};

    public String solution(String letter) {
        return Arrays.stream(letter.split(" "))
            .map(dictionary::get)
            .collect(Collectors.joining());
    }
}

 

import java.util.Map;
import java.util.HashMap;

class Solution {
    public String solution(String letter) {
        String answer = "";
        Map<String, String> morse = new HashMap<>(){
            {
                put(".-","a");
                put("-...","b");
                put("-.-.","c");
                put("-..","d");
                put(".","e");
                put("..-.","f");
                put("--.","g");
                put("....","h");
                put("..","i");
                put(".---","j");
                put("-.-","k");
                put(".-..","l");
                put("--","m");
                put("-.","n");
                put("---","o");
                put(".--.","p");
                put("--.-","q");
                put(".-.","r");
                put("...","s");
                put("-","t");
                put("..-","u");
                put("...-","v");
                put(".--","w");
                put("-..-","x");
                put("-.--","y");
                put("--..","z");
            }
        };
        String[] letters = letter.split(" ");
        for(String str : letters){
            answer += morse.get(str);
        }
        return answer;
    }
}

 

 

댓글