처음에는 반복문을 돌려가면서 숫자면 넘기고, 단어면 차례대로 더해가면서 특정한 문자열이 되면 Replace로 특정한 문자열에 해당하는 값으로 변환해주면 되겠다고 생각했다.
그래서 떠오른 것이 Key, Value로 구성된 Map이었고 아래와 같은 코드를 작성하였다.
마무리할 때 Map을 다 구성하고 나서 생각해보니 그저 Key 값을 하나씩 꺼내오면서 ReplaceAll을 사용해도 된다는 생각이 들었고, 결론적으로 굳이 Map을 사용하지 않고, 배열에서 숫자인 인덱스와 그에 맞는 특정한 문자열을 적절히 나열했다면 코드 길이가 크게 단축되었을 것이라는 생각이 든다.
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(String s) {
Map<String, String> map = new HashMap<>();
map.put("zero", "0");
map.put("one", "1");
map.put("two", "2");
map.put("three", "3");
map.put("four", "4");
map.put("five", "5");
map.put("six", "6");
map.put("seven", "7");
map.put("eight", "8");
map.put("nine", "9");
for (String key : map.keySet()) {
s = s.replaceAll(key, map.get(key));
}
int answer = Integer.parseInt(s);
return answer;
}
}