문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
메모
- 정규 표현식으로 replace하지 않았을 때 오답 처리되었다.
- split은 특정 value를 기준으로 문자열 사이를 배열로 끊어지게 한다.
- join은 특정 value로 배열 사이를 연결시켜 문자열로 만든다.
정답
// 정답
function solution(s) {
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);
return Number(s);
}
// 리팩토링
function solution(s) {
s = s
.replace(/zero/g, 0)
.replace(/one/g, 1)
.replace(/two/g, 2)
.replace(/three/g, 3)
.replace(/four/g, 4)
.replace(/five/g, 5)
.replace(/six/g, 6)
.replace(/seven/g, 7)
.replace(/eight/g, 8)
.replace(/nine/g, 9);
return Number(s);
}
// 오답
function solution(s) {
s = s.replace("zero", 0);
s = s.replace("one", 1);
s = s.replace("two", 2);
s = s.replace("three", 3);
s = s.replace("four", 4);
s = s.replace("five", 5);
s = s.replace("six", 6);
s = s.replace("seven", 7);
s = s.replace("eight", 8);
s = s.replace("nine", 9);
return Number(s);
}
// 모범답안
function solution(s) {
const num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < num.length; i++) {
let arr = s.split(num[i]);
s = arr.join(i);
}
return Number(s);
}