[프로그래머스] 영어가 싫어요
본문 바로가기
코딩 테스트 연습/Programmers

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

by 은돌1113 2023. 7. 18.

문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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

 

댓글