코딩테스트 준비/프로그래머스
[프로그래머스 Level 0] 120894. 영어가 싫어요 (JavaScript)
MOON달
2022. 12. 8. 09:35
728x90
반응형
문제 설명
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
입출력 예
number | result |
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
입출력 예 설명
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.
function solution(numbers) {
const numsN = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
numsN.forEach((str, index) => {
numbers = numbers.split(str).join(index)
})
return Number(numbers)
}
- forEach (값, index) : Array 객체에서만 사용가능한 메서드로 배열의 요소들로 반복하여 작업을 수행
- numsN 내에서 돌면서 split을 이용해 numbers를 자르고 join을 이용해 index로 넣는 방법
- numbers를 정수로 바꿔서 return
다른 사람의 풀이
function solution(numbers) {
let numStr = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ];
numStr.forEach((str, idx) => {
numbers = numbers.replaceAll(str, idx);
});
return Number(numbers);
}
- ECMA-262 12th(2021) 스펙을 기준으로 replaceAll() 기능이 추가
- returns a new string with all matches of a pattern replaced by a replacement (아래에서 가져옴)
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
String.prototype.replaceAll() - JavaScript | MDN
The replaceAll() method returns a new string with all matches of a pattern replaced by a replacement. The pattern can be a string or a RegExp, and the replacement can be a string or a function to be called for each match. The original string is left unchan
developer.mozilla.org
☞ 아직 이해하기가 좀 어렵다...훨씬 코드가 간결해보이는데...자바스크립트 공부가 더 필요할 것 같다!
728x90