본문 바로가기

알고리즘

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

문제 설명

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

내 코드: 

function solution(s) {
    let arr = ["zero","one","two","three","four","five","six","seven","eight","nine"]
    let n = [0,1,2,3,4,5,6,7,8,9]
    
    let i =0
    while (!Number.isInteger(Number(s))){
        s = s.replace(arr[i],n[i])
        i ++;
        if (i === arr.length) i = 0
    }
    return Number(s)
    
}

정규 표현식을 쓰거나 replaceAll 을 쓸 수도 있지만 정규표현식은 따로 찾아봐야되서 복잡해질까봐 내가 아는 방식대로 일단 풀고 리펙토링 했다. replaceAll은 가끔 사용을 제한하는 경우가 있어서..! while 문으로 될 때 까지 돌렸다

 

 

 

만약 i가 length만큼 늘어났는데도 문자열이 존재한다면 i를 다시 0으로 초기화하고 숫자가 될 때 까지 반복하는 코드이다.