https://school.programmers.co.kr/learn/courses/30/lessons/120894
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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 |
"onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
"onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
class Solution {
public long solution(String numbers) {
long answer = 0;
boolean isRoop=true;
while(isRoop){
numbers=convertNum(numbers);
for(int i=0;i<numbers.length();i++){
if('a'<=numbers.charAt(i) && numbers.charAt(i)<='z'){
break;
} //아직 영어가 남아있으면
else{
isRoop=false;
break;
}
}
}
answer=Long.parseLong(numbers);
return answer;
}
public static String convertNum(String s){
if(s.contains("zero")){
s=s.replace("zero","0");
}
if(s.contains("one")){
s=s.replace("one","1");
}
if(s.contains("two")){
s=s.replace("two","2");
}
if(s.contains("three")){
s=s.replace("three","3");
}
if(s.contains("four")){
s=s.replace("four","4");
}
if(s.contains("five")){
s=s.replace("five","5");
}
if(s.contains("six")){
s=s.replace("six","6");
}
if(s.contains("seven")){
s=s.replace("seven","7");
}
if(s.contains("eight")){
s=s.replace("eight","8");
}
if(s.contains("nine")){
s=s.replace("nine","9");
}
return s;
}
}

다른 방법이 있었을까.. 해서 봤는데
반복문을 안써도 됐다..
replace()함수에 대한 얕은 지식이.. 이렇게 만들었다.
replace()는 해당 문자열에 있는 그 수를 한번에 변경해주니까..