👉https://programmers.co.kr/learn/courses/30/lessons/81301
우선 문제를 보고 영어의 규칙이 있을까 고민하였다...
for of는 string도 반복하고 개별값을 보여줄 수 있다 하여 그걸로 뭘 할 수 있을까 고민하였다...
어제 풀었던 문제에서 사용한 replace를 사용하면 되지 않을까해서 사용해보았다.
그런데 제출 후 채점하기에서 계속 실패가 나와서 이유를 찾아보니, replace는 string에서 제일 먼저 발견된것만 바꿀수 있다고 해서 replaceall 또는 정규표현식을 써야 모두 바꿀수 있다고 하였다.
function solution(s) {
let answer = 0;
s = s.replace(/zero/g, 0);
s = s.replace(/one/g, 1);
s = s.replace(/two/g, 2);
s = s.replace(/three/g, 3);
s = s.replace(/four/g, 4);
s = s.replace(/five/g, 5);
s = s.replace(/six/g, 6);
s = s.replace(/seven/g, 7);
s = s.replace(/eight/g, 8);
s = s.replace(/nine/g, 9);
answer = Number(s);
return answer;
}
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
너무 깔끔하고 기발해서 머리 탁 쳤다...
split을 쓰면 해당을 기준으로 나누고, join으로 해당 숫자를 넣는다. 두 메소드 사용법을 잘 봐두어야겠다.
정규표현식 /~~~/g를 쓰면 모두 찾는다는것을 다시 한번 머리에 집어 넣어야겠다.
다시 한번 저 코드의 감탄하며 ...