프로그래머스 : 숫자 문자열과 영단어

KHW·2022년 1월 3일
0

코딩테스트

목록 보기
13/17

문제

100/100
15분 소요

코드

function solution(s) {
    let dic = ['zero','one','two','three','four','five','six','seven','eight','nine']
    let str = ''
    let result = ''
    s.split('').map((val)=>{

        if(dic.indexOf(str)>-1){
            result = result.concat(dic.indexOf(str))
            str=''
        }

        if(Number(val) > -1){
            result = result.concat(val)
        }
        else{
            str = str.concat(val)
        }
    })
    if(str)
        result = result.concat(dic.indexOf(str))

    return Number(result)
}

다른사람의 코드1

function solution(s) {
    s = s.replace(/zero/gi, 0)
    .replace(/one/gi, 1)
    .replace(/two/gi, 2)
    .replace(/three/gi, 3)
    .replace(/four/gi, 4)
    .replace(/five/gi, 5)
    .replace(/six/gi, 6)
    .replace(/seven/gi, 7)
    .replace(/eight/gi, 8)
    .replace(/nine/gi, 9)
    return parseInt(s);
}

결국 무엇을 무엇으로 바꾸는 것이니 replace를 사용하는것이 간단하다

다른사람의 코드2

function solution(s) {
    let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    var answer = s;

    for(let i=0; i< numbers.length; i++) {
        let arr = answer.split(numbers[i]);
        answer = arr.join(i);
    }

    return Number(answer);
}

제일 신박했다.
numbers를 순회하면서
split의 값으로 분리를 일단하고
join의 값으로 해당 부분들에 값을 넣는 이런식이 가능하다니 생각했다.

정리

split(a) , join(b) 을 통해 replace(/a/g,b)의 느낌으로 처리할 수 있다는 것을 알게되었다.

profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글