https://programmers.co.kr/learn/courses/30/lessons/81301
첫번째 시도!
오늘 푼 문제는 아니다
replaceAll 메서드를 사용하고 싶었지만, 프로그래머스에서는 사용이 불가능한 것 처럼 보였다
function solution(s) {
if(Number.isInteger(Number(s))){ //s가 정수인지
return Number(s)
}
let str = s
const numEn= ['zero','one','two','three','four','five','six','seven','eight','nine','ten']
while(true){
if(Number.isInteger(Number(str))){ // 만약 str이 정수라면 값반환
return Number(str)
}
for(let i=0; i<numEn.length; i++){
str=str.replace(numEn[i],i)//for문을 돌면서 replace로 문자열 대체
}
}
}
더보기
테스트 1 〉 | 통과 (0.07ms, 30.1MB) |
테스트 2 〉 | 통과 (0.08ms, 30MB) |
테스트 3 〉 | 통과 (0.06ms, 30MB) |
테스트 4 〉 | 통과 (0.06ms, 29.8MB) |
테스트 5 〉 | 통과 (0.10ms, 30.1MB) |
테스트 6 〉 | 통과 (0.08ms, 30.1MB) |
테스트 7 〉 | 통과 (0.14ms, 29.9MB) |
테스트 8 〉 | 통과 (0.07ms, 30.1MB) |
테스트 9 〉 | 통과 (0.06ms, 29.9MB) |
테스트 10 〉 | 통과 (0.05ms, 29.9MB) |
두번째 시도
다른 풀이를 보니 split으로 푸는 걸 보았다. split 과 join만 캐치해 다시 생각해보았다
function solution(s) {
if(Number.isInteger(Number(s))){
return Number(s)
}
let str=s
const numEn= ['zero','one','two','three','four','five','six','seven','eight','nine','ten']
for(let i=0; i<numEn.length; i++){
if(Number.isInteger(Number(str))){
return Number(str)
}
str=str.split(numEn[i]).join(i)
}
}
더보기
테스트 1 〉 | 통과 (0.06ms, 30.1MB) |
테스트 2 〉 | 통과 (0.09ms, 29.9MB) |
테스트 3 〉 | 통과 (0.07ms, 30.1MB) |
테스트 4 〉 | 통과 (0.06ms, 29.8MB) |
테스트 5 〉 | 통과 (0.07ms, 30.1MB) |
테스트 6 〉 | 통과 (0.08ms, 30MB) |
테스트 7 〉 | 통과 (0.07ms, 29.9MB) |
테스트 8 〉 | 통과 (0.15ms, 30.1MB) |
테스트 9 〉 | 통과 (0.10ms, 30MB) |
테스트 10 〉 | 통과 (0.05ms, 29.9MB) |
'알고리즘 > 프로그래머스 문제-JS' 카테고리의 다른 글
[JS]최대공약수와 최소공배수 (0) | 2022.06.27 |
---|---|
[JS]예산 (0) | 2022.06.26 |
[JS]가운데 글자 가져오기 (0) | 2022.05.31 |
[JS]같은 숫자는 싫어 (0) | 2022.05.31 |
[JS]두 정수 사이의 합 (0) | 2022.05.31 |