Just Do IT!
[프로그래머스 Level 0] 120894. 영어가 싫어요 (JavaScript) 본문
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
☞ 아직 이해하기가 좀 어렵다...훨씬 코드가 간결해보이는데...자바스크립트 공부가 더 필요할 것 같다!
728x90
'코딩테스트 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 0] 120906. 자릿수 더하기 (JavaScript) (0) | 2022.12.11 |
---|---|
[프로그래머스 Level 0] 120876. 겹치는 선분의 길이 (JavaScript) (0) | 2022.12.09 |
[프로그래머스 Level 0] 120861. 캐릭터의 좌표 (JavaScript) (0) | 2022.12.07 |
[프로그래머스 Level 0] 120842. 2차원으로 만들기 (JavaScript) (0) | 2022.12.06 |
[프로그래머스 Level 0] 120836. 순서쌍의 개수 (JavaScript) (0) | 2022.12.05 |