본문 바로가기
Algorithm

[프로그래머스] JavaScript | 숫자 문자열과 영단어

by Baest 2022. 8. 15.

 

https://school.programmers.co.kr/learn/courses/30/lessons/81301

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

 

풀이

- 처음에 {key: value} 로 잡아두고 key 에 맞는 value로 replace 하려고 했으나 뭔가 코드가 복잡해지는 것 같아 몇가지 풀이를 찾아보았다.

- 다른 사람들의 풀이를 보니까, 이 문제의 특성 중 인덱스와 영단어가 일치하는 것을 활용하였다.

 

1) 문자열이 들어오는 s를 변수에 담아 복사해두고, 영단어 배열만큼 반복문을 돌며 영단어와 일치할 경우 split하여 return할 변수에 담는다.

2) 그러면 여기서 return할 변수(answer)에 숫자들만 담기게 되고, split한 상태로 담기면 배열로 담기니 이 부분을 join을 사용해서 문자열로 바꾼다.

3) 여기서 끝이 아닌고 문제에서 요구하는 바와 같이 숫자 타입으로 바꿔준다. 

 

+ 정규식을 이용해서 푸는 방법도 있다.

1
2
3
s = s.replace(/zero/g, 0);
s = s.replace(/one/g, 1);
s = s.replace(/two/g, 2);
cs

 

제출코드 및 채점결과

1
2
3
4
5
6
7
8
9
10
11
function solution(s) {
    let answer = s
    let numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
 
    for(let i = 0; i < numbers.length; i += 1) {
        let arr = answer.split(numbers[i])
        console.log(arr)
        answer = arr.join(i)
    }
    return Number(answer)
}
 
cs