문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
numbers |
result |
"onetwothreefourfivesixseveneightnine" |
123456789 |
"onefourzerosixseven" |
14067 |
풀이
import java.util.Map;
class Solution {
public long solution(String numbers) {
long answer = 0;
String str = "";
String result = "";
// Map에 Key와 value 추가
Map<String, String> map = Map.of (
"zero", "0",
"one", "1",
"two", "2",
"three", "3",
"four", "4",
"five", "5",
"six", "6",
"seven", "7",
"eight", "8",
"nine", "9"
);
// numbers를 한 글자씩 나누면서 str에 더해주고,
// 만약 map의 key에 같은 값이 있으면 result에 저장하고 str을 빈 문자열로 초기화 해준다.
for (int i = 0; i < numbers.length(); i++) {
str += numbers.substring(i, i+1);
if (map.containsKey(str)) {
result += map.get(str);
str = "";
}
}
// String 형태의 result를 Long형으로 변환
answer = Long.parseLong(result);
return answer;
}
}