영어가 싫어요
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
numbers는 소문자로만 구성되어 있습니다.
numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
1 ≤ numbers의 길이 ≤ 50
"zero"는 numbers의 맨 앞에 올 수 없습니다.
실행 시간 : 0.09ms ~ 0.15ms
replace() 를 활용해 들어온 문자열과 숫자를 교환해준다.
class Solution {
public long solution(String numbers) {
long answer = 0;
numbers = numbers.replace("zero", "0");
numbers = numbers.replace("one", "1");
numbers = numbers.replace("two", "2");
numbers = numbers.replace("three", "3");
numbers = numbers.replace("four", "4");
numbers = numbers.replace("five", "5");
numbers = numbers.replace("six", "6");
numbers = numbers.replace("seven", "7");
numbers = numbers.replace("eight", "8");
numbers = numbers.replace("nine", "9");
answer = Long.parseLong(numbers);
return answer;
}
}
실행 시간 : 0.10ms ~ 0.16ms
위에 코드를 보면 반복되는 코드가 보인다.
즉, for문으로 만들어서 사용이 가능하다.
※ 인덱스 0번은 'zero', 1번은 'one' 가 들어가 있다.
class Solution {
public long solution(String numbers) {
long answer = 0;
String[] number = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i < number.length; i++) {
numbers = numbers.replaceAll(number[i], String.valueOf(i));
}
answer = Long.parseLong(numbers);
return answer;
}
}
실행시간 : 0.11ms ~ 0.18ms
Map 인터페이스를 활용한 방법
import java.util.HashMap;
class Solution {
public long solution(String numbers) {
long answer = 0;
HashMap<String, String> numberMap = getMap();
for (String key : numberMap.keySet()) {
System.out.println(key);
numbers = numbers.replace(key, numberMap.get(key));
System.out.println(numbers);
}
answer = Long.parseLong(numbers);
return answer;
}
private HashMap<String, String> getMap(){
HashMap<String, String> map = new HashMap<String, String>();
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");
return map;
}
}