코딩 테스트

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

y_flm 2025. 4. 23. 15:41
반응형
문제:
네오와 프로도가 숫자놀이를 하고 있습니다.
네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
1478 → "one4seveneight"234567 → "23four5six7"10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. 
s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

문제 풀어보기: https://school.programmers.co.kr/learn/courses/30/lessons/81301#

 

풀이보기
더보기
function solution(s) {
    let words = ['zero', 'one','two','three','four','five','six','seven','eight','nine'];
    let numWords = {};
    let str = s;
    
    for(let i = 0; i <= 9; i++) {
        numWords[i] = words[i];
    }
    
    for(let num in numWords) {
        if(str.includes(numWords[num])) {
            str = str.replaceAll(numWords[num], num);
        }
    }
    
    return Number(str);
}

나는 객체를 이용해서 풀었다.

먼저 숫자 영단어를 미리 작성해놓고, 이를 이용해서 numWords에 0: 'zero' 형식으로 저장했다.

그리고 for in문을 통해서 만약 str에 numWords의 값이 포함되면 해당 값을 replace하도록 했다.

마지막으로 str을 숫자 형식으로 변환해서 반환해주면 끝!

 

반응형