개발로그필름

[프로그래머스/JS] 영어가 싫어요 본문

coding test/프로그래머스

[프로그래머스/JS] 영어가 싫어요

yuullog 2024. 2. 16. 11:47
728x90
반응형
SMALL

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

 

프로그래머스

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

programmers.co.kr

 

사람의 머리로는 0은 zero다 라는걸 알아서 빠르게 변환할 수 있지만

컴퓨터에게 이걸 어떻게 알려줘야 할까 고민하는 시간이 길었던 문제

바꿔야하는 숫자가 zero부터 nine이고 반복문을 0부터 10까지 돌리자 라는 생각이 떠오른 순간 빠르게 풀 수 있었다

 

나의 풀이
js
function solution(numbers) {
    const numArray = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
    
    for(let i = 0; i < numArray.length; i++){
        numbers = numbers.split(numArray[i]).join(i)
    }
    
    return Number(numbers)
}

- 문자열을 숫자로 바꾸기 위해 Number(string)을 했는데 +(string)을 해도 숫자로 바뀐다

 

 

다른 사람 풀이
js
function solution(numbers) {
    const obj = {
        zero: 0, one: 1, two: 2, three: 3, four: 4,
        five: 5, six: 6, seven: 7, eight: 8, nine: 9
    };

    const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
        return obj[v];
    });

    return Number(num);
}

- object를 사용해서 코드 짜는게 바로 떠오르지는 않지만 이렇게 풀 수도 있구나

- replace()에서 함수를 전달할 수도 있었다니!

- 정규식 익숙해지기

반응형
LIST
Comments