
class Solution {
public String solution(String letter) {
String letters = letter + " ";
String answer = "";
String mose = "";
for (int i = 0; i < letters.length(); i++) {
if (letter.charAt(i) == ' ') {
answer += mosing(mose);
mose = "";
}
else mose += letter.charAt(i);
}
return answer;
}
private char mosing(String st) {
if (st == ".-") return 'a';
else if (st == "-...") return 'b';
else if (st == "-.-.") return 'c';
else if (st == "-..") return 'd';
else if (st == "..-.") return 'e';
else if (st == "--.") return 'f';
else if (st == "....") return 'g';
else if (st == "..") return 'h';
else if (st == ".---") return 'i';
else if (st == ".") return 'j';
else if (st == "-.-") return 'k';
else if (st == ".-..") return 'l';
else if (st == "--") return 'm';
else if (st == "-.") return 'n';
else if (st == "---") return 'o';
else if (st == ".--.") return 'p';
else if (st == "--.-") return 'q';
else if (st == ".-.") return 'r';
else if (st == "...") return 's';
else if (st == "-") return 't';
else if (st== "..-") return 'u';
else if (st == "...-") return 'v';
else if (st == ".--") return 'w';
else if (st == "-..-") return 'x';
else if (st == "-.--") return 'y';
else return 'z';
}
}
처음 작성한 코드는 위와 같다.
다시 살펴보니 고칠 곳이 정말 많은 것 같다.
[수정사항]
- mose 문자열을 초기화 하지 않았기 때문에, 첫 번째 모스 부호 문자열이 올바르게 처리되지 않을 수 있음
- 문자열 비교에는 == 연산자 보다 equals 연산자를 사용하는 것이 바람직함
- if 문을 사용하다 보니 코드가 길어짐
- (모스부호 할 때 모스는 mose 가 아니라 morse임)
해당 사항들을 반영한 코드는 아래와 같다.
class Solution {
public String solution(String letter) {
String[] words = letter.split(" ");
StringBuilder result = new StringBuilder();
for (String word : words) {
result.append(morseToChar(word));
}
return result.toString();
}
private static char morseToChar(String morse) {
switch (morse) {
case ".-": return 'a';
case "-...": return 'b';
case "-.-.": return 'c';
case "-..": return 'd';
case ".": return 'e';
case "..-.": return 'f';
case "--.": return 'g';
case "....": return 'h';
case "..": return 'i';
case ".---": return 'j';
case "-.-": return 'k';
case ".-..": return 'l';
case "--": return 'm';
case "-.": return 'n';
case "---": return 'o';
case ".--.": return 'p';
case "--.-": return 'q';
case ".-.": return 'r';
case "...": return 's';
case "-": return 't';
case "..-": return 'u';
case "...-": return 'v';
case ".--": return 'w';
case "-..-": return 'x';
case "-.--": return 'y';
case "--..": return 'z';
default: return ' ';
}
}
}
'각종 문제들' 카테고리의 다른 글
[프로그래머스] 코딩테스트 입문 - 공 던지기 (0) | 2023.04.19 |
---|---|
[프로그래머스] 코딩테스트 입문 - 구슬을 나누는 경우의 수 (0) | 2023.04.12 |
[프로그래머스] 코딩테스트 입문 - 진료 순서 정하기 (0) | 2023.04.10 |
배포 자동화 중 오류 해결 (0) | 2023.04.04 |
[프로그래머스] 코딩테스트 입문 - 옷가게 할인 받기 (0) | 2023.04.03 |