🎯 문제
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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 |
⛳ 답안
class Solution {
public long solution(String numbers) {
long answer = 0;
numbers=numbers.replaceAll("one", "1");
numbers=numbers.replaceAll("two", "2");
numbers=numbers.replaceAll("three", "3");
numbers=numbers.replaceAll("four", "4");
numbers=numbers.replaceAll("five", "5");
numbers=numbers.replaceAll("six", "6");
numbers=numbers.replaceAll("seven", "7");
numbers=numbers.replaceAll("eight", "8");
numbers=numbers.replaceAll("nine", "9");
numbers=numbers.replaceAll("zero", "0");
System.out.println(numbers);
answer=Long.valueOf(numbers);
return answer;
}
}
🎲 과정
약간 이게 맞나 싶은 문제였어...모든 조건 줘서 해당 문자가지고 있으면 치환시켜주는 것 밖에 생각이 안났다.
그래서 하나하나 해서 풀긴했는데 좀 구리다고 생각은 했어...
다른 사람들 푼거 보니까 애초에 저 문자열들을 다 넣은 배열을 하나 만들어서 반복문 돌려가지고 푸시더라...그게 맞는거 같아...저렇게 하나하나 다 쓰면 코드치는 의미가 없는것같기도...모르겠다...String[] array= {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; for(int i=0; i<array.length; i++{ numbers=numbers.replaceAll(array[i],i); }
요렇게