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()
는 해당 문자열에 있는 그 수를 한번에 변경해주니까..