문제
영문으로 되어있는 문자를 숫자로 변경하라
코드 풀이(정규식 사용)
function solution(numbers) {
var en = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for(let i = 0; i< en.length; i++) {
numbers= numbers.replace(new RegExp(en[i], "g"), i);
}
return parseInt(numbers);
}
- 영단어 배열 en, 인덱스 i와 배열 내 원소 en[i]를 사용해 각 숫자에 해당하는 영단어를 찾아낼 수 있다
- for 반복문을 사용해 각 영단어를 숫자로 대체한다
- numbers.replace를 사용해 number 문자열 내에 en[i]에 해당하는 모든 패턴을 찾아 i로 대체 정규식 표현을 사용해 모든 일치하는 패턴을 검색해 대체할 수 있다
- RegExp... en[i]에 해당하는 영단어를 찾기 위한 정규 표현식 생성 g 플래그는 모든 일치하는 패턴을 찾아내는 전역 검색을 수행
- paresInt를 사용해 문자열로 된 숫자를 정수로 변환한다
다른 풀이
1) split 사용
function solution(numbers) {
const number = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < number.length; i++) {
numbers = numbers.split(number[i]).join(i);
}
return +numbers;
}
////
[ 'onetwothreefourfivesixseveneightnine' ]
[ '', 'twothreefourfivesixseveneightnine' ]
[ 'one', 'threefourfivesixseveneightnine' ]
[ 'onetwo', 'fourfivesixseveneightnine' ]
[ 'onetwothree', 'fivesixseveneightnine' ]
[ 'onetwothreefour', 'sixseveneightnine' ]
[ 'onetwothreefourfive', 'seveneightnine' ]
[ 'onetwothreefourfivesix', 'eightnine' ]
[ 'onetwothreefourfivesixseven', 'nine' ]
[ 'onetwothreefourfivesixseveneight', '' ]
- for문 사용은 위의 코드와 동일
- numbers.split(number[i]) 를 사용해 numbers 문자열을 number[i]에 해당하는 모든 패턴으로 분할후 숫자 i로 결합
- +numbers 문자열을 숫자로 변환하는 간단한 방법중 하나 단항 연산자 + 를 사용한다
2) forEach 사용
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);
}
- numStr 배열을 순회하며 각 영단어를 숫자로 대체한다
- Number(numbers) 문자열을 숫자로 변환
주절주절
- forEach를 왜 생각을 못해서 .. 정규식표현까지 써가면서 짠건지 생각하는 힘을 기르자!
'기초다지기 > JS 코딩테스트' 카테고리의 다른 글
javascript 2차원 배열 내 리스트에 id, pw가 있는지 찾고 일치 여부에 따른 메세지 반환 (0) | 2023.09.12 |
---|---|
javascript 배열 중복 제거후 변수 k의 길이만큼 자르거나 채우는 방법 (0) | 2023.09.11 |
[javascript] for..of / for문 / indexOf를사용한 알파벳 등장 횟수 계산 (0) | 2023.08.25 |
javascript 조건에 맞게 수열 변환 (0) | 2023.08.22 |
javascript 배열내 길이가 같은 문자열이 가장 많은 갯수 (0) | 2023.08.20 |