IT/Algorithm

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

프티 2021. 10. 1. 17:38
반응형

https://programmers.co.kr/learn/courses/30/lessons/81301?language=javascript 

 

코딩테스트 연습 - 숫자 문자열과 영단어

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

programmers.co.kr

 

나의 풀이

정규 표현식을 사용하여 0부터 9까지 replace 함수를 메소드 체이닝 하였다.

그리고 parseInt로 감싸서 숫자로 반환하였다.

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

만약 문제에서 s의 문자열에 대문자를 섞었다면 g 플래그에 i 플래그를 추가했을 것이다(g: 글로벌, i: 대소문자를 구분하지 않음).

 

문제를 이해하자마자 정규 표현식부터 생각이 났던 것 같다..!

 

변수를 따로 선언하지 않고 코드 자체를 리턴하는 습관은 가독성을 위해서라도 고쳐야 할 것 같다.

 

다른 사람의 풀이

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과 join의 활용성을 환기시킬 수 있었다.

반응형