✏️ 문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
✏️ code 1차
📌 HashMap
HashMap의 key : value를 활용하여 문제를 풀어보았습니다만, 다소 복잡했습니다.
public class P120894 {
public long solution(String numbers) {
HashMap<String, Integer> map = new HashMap<>();
String arr[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < 10; i++) {
map.put(arr[i], i);
}
int index = 0;
StringBuilder result = new StringBuilder();
while (index < numbers.length()) {
for (String key : map.keySet()) {
if (numbers.startsWith(key, index)) {
result.append(map.get(key));
index += key.length();
break;
}
}
}
long answer = Long.parseLong(result.toString());
return answer;
}
}
✏️ code 2차
📌 replaceAll
replaceAll을 활용하여 더 쉽게 풀어보았습니다.
i = 0인 경우, numbers = numbers.replaceAll("zero", "0")이 될 수 있도록 String.valueOf(i)로 작성하였습니다.
📌 long result = Long.parseLong(numbers)
numbers의 길이가 50으로, int의 범위를 벗어나 테스트케이스 오류가 발생하기 때문에 long으로 변환해 return 했습니다.
class Solution {
public long solution(String numbers) {
String arr2[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for (int i = 0; i < arr2.length; i++) {
numbers = numbers.replaceAll(arr2[i], String.valueOf(i));
}
long result = Long.parseLong(numbers);
return result;
}
}
반응형