이 문제와 비슷한 유형의 문제를 풀어본 적이 있어 쉽게 풀었습니다.
먼저 숫자 문자열 배열을 하나 선언해준 후 문자열에 배열 요소가 포함되어 있다면 바꾸어 주는 방식으로 풀어봤습니다.
class Solution {
public int solution(String s) {
String strArr[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
for(int i = 0; i<strArr.length; i++) s = s.replace(strArr[i], Integer.toString(i));
return Integer.parseInt(s);
}
}
strArr의 길이만큼 반복하면서 s 문자열의 숫자 문자열들을 바꿔주었습니다. return 값이 int이기 때문에 마지막에 parseInt를 사용해 문자열을 숫자로 바꿔주는 센스~~
같은 방법을 사용해 js로도 풀어보았습니다.
function solution(s) {
var alphabet = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"]
alphabet.forEach((val, idx) => s = s.replaceAll(val, idx))
return +s;
}
js는 forEach를 사용해 한 번에 요소와 인덱스를 받았고, 처음에 replace를 사용해 문제가 틀렸었는데 js는 자바와 다르게 replace를 쓰게 되면 하나의 요소에 한해 replace를 해주기 때문에 replaceAll을 사용해야 합니다. 문자열을 숫자로 바꾸는 방법은 여러가지가 있는데 그 중 '+문자열'을 사용해 봤습니다. 다른 방법으로는 Number()과 parseInt()가 있습니다.
오늘의 코테는 20000~