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

이아현·2023년 6월 7일
0

코딩테스트

목록 보기
16/31
post-thumbnail

✅ 문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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 = 0;
  var nums = {
    one: 1,
    two: 2,
    three: 3,
    four: 4,
    five: 5,
    six: 6,
    seven: 7,
    eight: 8,
    nine: 9,
    zero: 0,
  };
  numbers = numbers.split("");
  var check = "";
  var numKeys = Object.keys(nums); // key값들만 뽑은 배열

  for (let i = 0; i < numbers.length; i++) {
    check += numbers[i];
    for (let j = 0; j < numKeys.length; j++) {
      if (check === numKeys[j]) {
        answer += String(nums[numKeys[j]]);
        check = "";
      }
    }
  }

  return Number(answer);
}
  • Object.keys(배열)을 이용해서 해당 key값들을 빼내고 check의 문자열과 비교하면서 answer에 값을 넣었다.

📃 다른 풀이

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를 사용해서 해당 값을 obj의 value값으로 바꿔서 반환했다.
  • replace 는 매개변수가 찾는 값, 바꿀 값인데 두 번째 인자로 콜백함수를 사용할 수 있다는 사실을 알게되었다!
  • replace(searchRegExp, replaceWith)
profile
PM을 지향하는 FE 개발자 이아현입니다 :)

0개의 댓글