1. 문제 설명
2. 나의 풀이
import java.util.HashMap;
import java.util.Map;
class Solution {
public String solution(String letter) {
Map<String, String> morse = new HashMap<>();
morse.put(".-", "a");
morse.put("-...", "b");
morse.put("-.-.", "c");
morse.put("-..", "d");
morse.put(".", "e");
morse.put("..-.", "f");
morse.put("--.", "g");
morse.put("....", "h");
morse.put("..", "i");
morse.put(".---", "j");
morse.put("-.-", "k");
morse.put(".-..", "l");
morse.put("--", "m");
morse.put("-.", "n");
morse.put("---", "o");
morse.put(".--.", "p");
morse.put("--.-", "q");
morse.put(".-.", "r");
morse.put("...", "s");
morse.put("-", "t");
morse.put("..-", "u");
morse.put("...-", "v");
morse.put(".--", "w");
morse.put("-..-", "x");
morse.put("-.--", "y");
morse.put("--..", "z");
String[] splitLetters = letter.split(" ");
StringBuilder answer = new StringBuilder();
for (String key : splitLetters)
{
answer.append(morse.get(key));
}
return answer.toString();
}
}
노가다로 풀었다
솔직히 모스부호 첨부터 hashmap으로 줘도 되는거아닌가.. 아니면 부호만 따로 배열로 주던가 ㅠㅠ
집어넣는거 매우 귀찮았음
3. 다른 사람의 풀이
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+=(char)(j+97);
}
}
return answer;
}
}
word가 morse 배열 안에 있으면 그 번지
그 번지(j)는 알파벳 순서이므로
+97을 더하면 자연수 => 알파벳
알파벳 아스키코드를 다시 char타입으로 answer에 넣어서 붙여주면 완성!
'코테 > java' 카테고리의 다른 글
[프로그래머스][java] lv 0 n의 배수 고르기 (0) | 2024.11.22 |
---|---|
[프로그래머스][java] lv 0 구슬을 나누는 경우의 수 (0) | 2024.11.22 |
[프로그래머스][java] lv 0 진료순서 정하기 (0) | 2024.11.21 |
[프로그래머스][java] lv 0 가장 큰 수 찾기 (1) | 2024.11.20 |
[프로그래머스][java] lv 0 배열 회전시키기 (0) | 2024.11.20 |