JavaScript | TypeScript/Javascript 코딩테스트
[ Javascript ] 코딩테스트 연습 ( 영어가 싫어요 )
shiro21
2023. 2. 5. 21:20
반응형
영어가 싫어요
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예numbersresult
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
입출력 예 설명
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
function solution(numbers) {
var answer = 0;
let arr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < arr.length; i++) {
numbers = numbers.split(arr[i]).join(i);
}
answer = Number(numbers)
return answer;
}
console.log(solution("onetwothreefourfivesixseveneightnine")); // 123456789
console.log(solution("onefourzerosixseven")); // 14067
split() 메서드로 문자열을 빼서 배열로 나누고, 나눠진 배열을 join() 메서드로 다시 문자열로 합쳐줍니다.
그리고 합쳐준 문자열을 숫자로 변환해서 반환해 줍니다.
- split() 메서드: 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.
- join() 메서드: 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
0단계 중에서는 이게 제일 헷갈렸습니다. split() 메서드와 join() 메서드를 합쳐서 써본 적이 없어서 이것저것 찾아보면서 한 것 같습니다..ㅠ.ㅠ
다른 사람의 풀이
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() 메서드로 푸는 방법인데 참 여러 가지 방법이 있는 것 같습니다..!! ( 이 방법이 제일 있어 보였습니다..ㅎㅎ )
반응형