문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/81301
내 코드:
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으로 초기화하고 숫자가 될 때 까지 반복하는 코드이다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] 약수의 개수와 덧셈 (JavaScript) (0) | 2023.06.21 |
---|---|
[프로그래머스] 시저 암호 (JavaScript) (0) | 2023.06.21 |
[프로그래머스] 소수만들기 (JavaScript) (0) | 2023.06.21 |
[프로그래머스] 콜라츠 추측 (JavaScript) (0) | 2023.06.20 |
[프로그래머스] 하샤드 수 (JavaScript) (0) | 2023.06.20 |