저장을 습관화

프로그래머스 LV.0 영어가 싫어요 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 영어가 싫어요

ctrs 2023. 9. 28. 23:04

프로그래머스 LV.0 영어가 싫어요

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

 

프로그래머스

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

programmers.co.kr

 

1. 문제 명

영어가 싫어요


2. 문제 설명

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


3. 제한 사항

- numbers는 소문자로만 구성되어 있습니다.

- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.

- 1 ≤ numbers의 길이 ≤ 50

- "zero"는 numbers의 맨 앞에 올 수 없습니다.


4. 예시

numbers result
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067


5. 기본 제공 코드

function solution(numbers) {
    var answer = 0;
    return answer;
}


6. 제출한 내 답

const solution = (my_string) => {
  const numbers = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
  ];
  numbers.forEach((v, i) => {
    my_string = my_string.replaceAll(v, i);
  });

  return +my_string;
};

 

6-2. VSC에 작성한 내용

const solution = (my_string) => {
  const numbers = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
  ];
  numbers.forEach((v, i) => {
    my_string = my_string.replaceAll(v, i);
  });

  return +my_string;
};

// 테스트
console.log(solution("onetwothreefourfivesixseveneightnine"));


7. 특이사항

그냥 해봤던거..

const solution = (my_string) => {
  return +my_string
    .replaceAll("zero", "0")
    .replaceAll("one", "1")
    .replaceAll("two", "2")
    .replaceAll("three", "3")
    .replaceAll("four", "4")
    .replaceAll("five", "5")
    .replaceAll("six", "6")
    .replaceAll("seven", "7")
    .replaceAll("eight", "8")
    .replaceAll("nine", "9");
};

// 테스트
console.log(solution("onetwothreefourfivesixseveneightnine"));

되긴 잘되는데 내가 보기에도 민망해서 그냥 안씀..

 

고친 것도 하드코딩이긴 하지만..


8. 다른 사람이 작성한 답

8-1. 좋아요 가장 많이 받은 풀이법, 객체와 정규표현식

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