728x90
문제 설명
머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성해보세요.
모스부호는 다음과 같습니다.
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'
}
제한사항
- 1 ≤ letter의 길이 ≤ 1,000
- return값은 소문자입니다.
- letter의 모스부호는 공백으로 나누어져 있습니다.
- letter에 공백은 연속으로 두 개 이상 존재하지 않습니다.
- 해독할 수 없는 편지는 주어지지 않습니다.
- 편지의 시작과 끝에는 공백이 없습니다.
입출력 예
letter | result |
".... . .-.. .-.. ---" | "hello" |
".--. -.-- - .... --- -." | "python" |
입출력 예 설명
입출력 예 #1
- .... = h
- . = e
- .-.. = l
- .-.. = l
- --- = o
- 따라서 "hello"를 return 합니다.
입출력 예 #2
- .--. = p
- -.-- = y
- - = t
- .... = h
- --- = o
- -. = n
- 따라서 "python"을 return 합니다.
- a ~ z에 해당하는 모스부호가 순서대로 담긴 배열입니다.
- {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String letter) {
String answer = "";
Map<String, String> map = new HashMap<String, String>();
map.put(".-", "a"); map.put("-...", "b");
map.put("-.-.", "c"); map.put("-..", "d");
map.put(".", "e"); map.put("..-.", "f");
map.put("--.", "g"); map.put("....", "h");
map.put("..", "i"); map.put(".---", "j");
map.put("-.-", "k"); map.put(".-..", "l");
map.put("--", "m"); map.put("-.", "n");
map.put("---", "o"); map.put(".--.", "p");
map.put("--.-", "q"); map.put(".-.", "r");
map.put("...", "s"); map.put("-", "t");
map.put("..-", "u"); map.put("...-", "v");
map.put(".--", "w"); map.put("-..-", "x");
map.put("-.--", "y"); map.put("--..", "z");
for(String t : letter.split(" ")){
answer += map.get(t);
}
return answer;
}
}
|
모스부호를 키로 소문자를 value로 하여 Map을 만들어 모든 모스부호를 저장합니다. map.get()으로 찾아 결합합니다. |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import java.util.List;
import java.util.Arrays;
class Solution {
public String solution(String letter) {
List<String> list = Arrays.asList(".-","-...","-.-.","-..",".","..-.",
"--.","....","..",".---","-.-",
".-..","--","-.","---",".--.","--.-",
".-.","...","-","..-","...-",".--",
"-..-","-.--","--..");
String answer = "";
for(String t : letter.split(" ")){
answer += (char)(list.indexOf(t) + 'a');
}
return answer;
}
}
|
모스 부호를 List로 만들고 indexOf로 인덱스를 찾아 'a'를 더해주어 char로 형변환하면 된다. |
728x90
'프로그래머스 코딩(자바) > Level 0' 카테고리의 다른 글
Programmers Level 0 - 팩토리얼 (0) | 2023.03.03 |
---|---|
Programmers Level 0 - A로 B 만들기 (0) | 2023.03.03 |
Programmers Level 0 - 중복된 문자 제거 (0) | 2023.03.03 |
Programmers Level 0 - 합성수 찾기 (2) | 2023.03.03 |
Programmers Level 0 - 문자열 정렬하기 (2) (0) | 2023.03.03 |