- 내 풀이
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;
}
}
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 2차원으로 만들기 (0) | 2023.03.11 |
---|---|
[프로그래머스 - JAVA] A로 B만들기 (0) | 2023.03.11 |
[프로그래머스 -JAVA] 중복된 문자 제거 (0) | 2023.03.11 |
프로그래머스 시작하기 (2) | 2023.03.11 |
[프로그래머스 - JAVA] 합성수 찾기 (0) | 2023.03.11 |
댓글