영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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) {
let arr = {0:"zero", 1:"one", 2:"two", 3:"three",4:"four",5:"five",6:"six",7:"seven",8:"eight",9:"nine" }
let arr2 = [...numbers]
let collabo = [];
let name = '';
for(let i=0; i<arr2.length; i++) { // 문자열 결합
collabo.push(arr2[i])
if(collabo.length>=3){ // 문자열이 3이상일 때
let name2 = collabo.join("")
for(let k=0; k<=9; k++){ //arr 중에서 같은것 있나 찾기
if(arr[k] == name2){ // 같은게 나오면 name에 추가.
name += k
collabo.splice(0,) // 문자열 결합은 초기화.
}
}
}
}
return Number(name)
}
<다른 답안>
객체를 선언할 땐 const를 사용한다.
{
내용
}
이런식으로 깔끔하게 선언한다.
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()와 replaceAll()의 차이점
replace(str1, str2)는 어떤 문자열 str1을 다른 문자열 str2로 변환하는 함수입니다.
replaceAll(pattern, str1)도 replace()처럼 어떤 문자열을 다른 문자열로 변환하지만, 기본적으로 인자로 전달된 정규표현식 패턴(pattern)과 일치하는 문자열들을 다른 문자열(str1)로 변환합니다.
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
잘라서 배열로 저장하기(Lv.0)[slice(시작, 끝부분 + 1) 시작~끝부분 출력] (0) | 2023.03.18 |
---|---|
최댓값과 최솟값(Lv.2)[sort((a,b) => a-b ) 오름차순 정렬] (0) | 2023.03.18 |
부족한 금액 계산하기(Lv.1)[배열생성 new Array(갯수).fill(0)] (0) | 2023.03.16 |
컨트롤 제트(Lv.0)[unshift는 앞에서 출력, pop()은 뒤에서 출력] (0) | 2023.03.16 |
문자열 다루기 기본[Lv.1] (0) | 2023.03.16 |