🧩 알고리즘 성장기/Programmers

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

은돌1113 2023. 7. 18. 09:43
728x90

문제 설명

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


제한사항

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

입출력 예

numbers result
"onetwothreefourfivesixseveneightnine" 123456789
"onefourzerosixseven" 14067

입출력 예 설명

 

입출력 예 #1

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

입출력 예 #2

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

문제풀이

  • 아래 코드로 테스트를 실행했을 때는 통과했는 데 체점을 하니까 다른 테스트에서 실패가 떴다..
function solution(numbers) {
  var answer = "";

  const en = [
    "zero",
    "one",
    "two",
    "three",
    "four",
    "five",
    "six",
    "seven",
    "eight",
    "nine",
    "ten",
  ];

  answer = numbers;

  for (let i = 0; i < en.length; i++) {
    const item = en[i];
    // numbers 안에 en의 각 index의 값을 출력
    var index = answer.indexOf(item);

    // index 값이 있다면
    if (index > -1) {
      // 해당 영어를 숫자로 변환해서 문자열에 대입
      answer = answer.replace(item, i);
    }
  }

  return Number(answer);
}

console.log(solution("onetwothreefourfivesixseveneightnine"));
console.log(solution("onefourzerosixseven"));
  • 이 분 블로그를 참고해보니 split으로 en의 value를 기준으로 자르고, 잘린 부분은 i로 메꿔주는 방식을 사용하셨다.
    많은 참고가 되었습니다...
 

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

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

velog.io

 

 

 

프로그래머스

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

programmers.co.kr

 

728x90