JavaScript | TypeScript/Javascript 코딩테스트

[ Javascript ] 코딩테스트 연습 ( 영어가 싫어요 )

shiro21 2023. 2. 5. 21:20
반응형

영어가 싫어요

 

문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


제한사항
  • numbers는 소문자로만 구성되어 있습니다.
  • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
  • 1 ≤ numbers의 길이 ≤ 50
  • "zero"는 numbers의 맨 앞에 올 수 없습니다.

입출력 예numbersresult
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067

입출력 예 설명

입출력 예 #1

  • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

입출력 예 #1

  • "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.

 

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

    for (let i = 0; i < arr.length; i++) {
        numbers = numbers.split(arr[i]).join(i);
    }
    answer = Number(numbers)
    return answer;
}
console.log(solution("onetwothreefourfivesixseveneightnine")); // 123456789
console.log(solution("onefourzerosixseven")); // 14067

 

 

split() 메서드로 문자열을 빼서 배열로 나누고, 나눠진 배열을 join() 메서드로 다시 문자열로 합쳐줍니다.

그리고 합쳐준 문자열을 숫자로 변환해서 반환해 줍니다.

 

  • split() 메서드: 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.
  • join() 메서드: 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.

 

0단계 중에서는 이게 제일 헷갈렸습니다. split() 메서드와 join() 메서드를 합쳐서 써본 적이 없어서 이것저것 찾아보면서 한 것 같습니다..ㅠ.ㅠ

 

다른 사람의 풀이

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);
}

객체를 만들어서 replace() 메서드로 푸는 방법인데 참 여러 가지 방법이 있는 것 같습니다..!! ( 이 방법이 제일 있어 보였습니다..ㅎㅎ )

반응형