function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
let answer = s
for(let i = 0; i < numbers.length; i++) {
// i번째 숫자를 경계로 앞뒤로 나눠서 i번째 숫자에 해당하는 문제 없애기
let arr = answer.split(numbers[i]);
// join(i)를 이용해 1번째 숫자를 기준으로 ['','나머지'] => i나머지 로 붙이기
answer = arr.join(i)
}
// answer = "1478" 처럼 string 형태이므로 int로 파싱
return parseInt(answer)
}
이 외에도 정규표현식으로 일일이 바꾸는 방식도 가능하다.
function solution(s) {
const number = s
.replace(/zero/gi, '0')
.replace(/one/gi, '1')
.replace(/two/gi, '2')
.replace(/three/gi, '3')
.replace(/four/gi, '4')
.replace(/five/gi, '5')
.replace(/six/gi, '6')
.replace(/seven/gi, '7')
.replace(/eight/gi, '8')
.replace(/nine/gi, '9');
return Number(number);
}
다른 사람의 풀이를 보던 도중 parseInt 로 푼 경우와 Number로 푼 경우가 있는데 두 경우는 아래와 같은 차이점이 있다.
- parseInt : 문자열 중에서 숫자로 된 부분만 뽑아서 return
- 소수점이 있을 경우 정수 부분만 return ex. parseInt(10.1234) → 10
- Number : 문자열 전체가 숫자일 경우에 해당 문자열을 number로 return
- 소수점이 있는 경우 소수점까지 return ex. Number(10.1234) → 10.1234
평소에 숫자 변환은 대부분 정수 변환이므로 parseInt 를 사용했는데 상황에 맞게 사용해야겠다.
Array.join( [seperator] ) : ["a", "b", "c"] 와 같이 comma 로 나눠져 있는 array 안의 문자열들을 seperator를 기준으로 합친다.
합친 결과는 string 이다. ( 위 코드에서도 i 라는 숫자를 seperator로 썼지만 결과는 string으로 return)
반응형
'알고리즘 > javascript' 카테고리의 다른 글
[프로그래머스] 코딩테스트연습 > 크레인 인형뽑기 게임 (0) | 2021.10.11 |
---|---|
[프로그래머스] 코딩테스트연습 > 키패드 누르기 (0) | 2021.10.11 |
[프로그래머스] 코딩테스트연습 > 신규아이디 추천 (0) | 2021.09.29 |
[프로그래머스] 코딩테스트연습 > 로또의 최고 순위와 최저 순위 (0) | 2021.09.29 |
[프로그래머스] 코딩테스트연습 > 완전탐색 > 모의고사 (0) | 2021.09.27 |