Day 9 수학, 문자열, 해시, 완전탐색, 조건문
Day9 9단계 20231026
2. 모스부호 (1)
- StringTokenizer를 사용할 때 nextToken()을 호출하면 StringTokenizer는 자동으로 다음 토큰을 호출하고, 그 토큰을 호출하면 그 다음 토큰을 호출한다.
- 그러므로 nextToken()을 두 번 연속으로 호출하면 첫 번째 호출에서 리턴된 토큰 값과 두 번째 호출에서 리턴된 토큰 값이 다를 수 있다.
- 따라서 st.nextToken().equals() 라고 작성하면 토큰을 두 번 연속으로 호출하기 때문에 각각 리턴된 토큰이 달라서 비교 시 문제가 발생한다.
- 하지만 st.nextToken()를 변수에 저장하고 그 변수를 호출하면 변수를 사용하기 때문에 같은 토큰을 두 번 호출하는 일이 발생하지 않는다.
import java.util.*;
class Solution {
public String solution(String letter) {
String[] morse = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(letter, " ");
while (st.hasMoreTokens()) {
String token = st.nextToken();
for (int i = 0; i < morse.length; i++) {
if (token.equals(morse[i])) {
sb.append((char) (i + 97));
break;
}
}
}
return sb.toString();
}
}