문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers는 소문자로만 구성되어 있습니다. numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다. 1 ≤ numbers의 길이 ≤ 50 "zero"는 numbers의 맨 앞에 올 수 없습니다.
나의 코드
class Solution {
public long solution(String numbers) {
long answer = 0;
String[] matchNums = {"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
for(int i=0; i<matchNums.length; i++) {
numbers = numbers.replaceAll(matchNums[i], String.valueOf(i));
}
answer = Long.parseLong(numbers);
return answer;
}
}
다른 사람 코드
class Solution {
public long solution(String numbers) {
return Long.parseLong(
numbers.replaceAll("zero", "0")
.replaceAll("one", "1")
.replaceAll("two", "2")
.replaceAll("three", "3")
.replaceAll("four", "4")
.replaceAll("five", "5")
.replaceAll("six", "6")
.replaceAll("seven", "7")
.replaceAll("eight", "8")
.replaceAll("nine", "9")
);
}
}
배열 및 반복문 사용 대신 하나하나 바꿔주는 방법
느낀 점
숫자에 해당되는 문자열을 0~9까지 문자열 배열에 담고, 0~9까지 반복문을 돌며 replaceAll()
함수를 사용하여 해당하는 문자를 숫자로 변경해주어 문제를 해결했다.
다른 사람 코드처럼 하나하나 바꿔주는 방법도 존재하며 직관적이라는 장점이 있지만, 개인적으로 내가 풀이한 방법이 좀 더 코드다운 것 같아 마음에 들었다.