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

정재은·2023년 2월 25일
0

코딩테스트

목록 보기
3/16
post-thumbnail

문제

Lv.0 영어가 싫어요

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


제한사항

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



나의 풀이

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

    for(let i=0; i<stringNum.length; i++){
        answer = answer.replaceAll(stringNum[i], i);
    };
        
    if(answer.charAt(0) == 0){
         while(answer.charAt(0) != 0){
            return answer.substring(1);
         };
    };
   
    return parseInt(answer);
};

콘솔로 값을 출력해보면서 코드를 짜느라 맨앞에 0이 있는 경우를 생각하고 if문을 작성했다
그런데 결론적으로 parseInt()를 통해 맨앞의 0들이 자동으로 삭제됐다
굳이 if문을 작성하지 않았어도 되었던..



다른 사람의 풀이

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

다른분들의 풀이를 보니 Number()로 변경을 하셨더라

Number()parseInt()는 문자열을 숫자로 형변환한다는 점에서 같지만 차이점이 있었다


Number()

  • 문자열을 숫자로 형변환
  • 문자열이 숫자가 아니면 무조건 NaN 반환
    ex1) "1000원" → NaN
    ex2) "가격은 1000원" → NaN

parseInt()

  • 문자열을 숫자로 형변환
  • 문자열이 숫자로 시작하면 숫자를 반환, 숫자로 시작하지 않으면 NaN 반환
    ex1) "1000원" → 1000
    ex2) "가격은 1000원" → NaN





profile
프론트엔드

0개의 댓글