[프로그래머스] 영어가 싫어요
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 영어가 싫어요 · js 영어가 싫어요
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 영어가 싫어요 · js 영어가 싫어요
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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합니다.
입출력 예 #1
- “onefourzerosixseven”를 숫자로 바꾼 14067를 return합니다.
나의 풀이
const EnToNumbers = [
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
];
function solution(numbers) {
EnToNumbers.forEach((item, idx) => {
numbers = numbers.split(item).join(idx);
});
return Number(numbers);
}
나의 두번째 풀이(Code Refactoring)
function solution(numbers) {
let eng = [
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
];
for (i = 0; i < eng.length; i++) {
numbers = numbers.split(eng[i]).join(i);
}
return Number(numbers);
}
// 1. eng값의 인덱스값 체크해서 numbers의 반환값을 숫자로 리턴
참고 할 만한 다른 사람의 코드
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를 이용한 콜백함수를 활용