숫자 문자열과 영단어
2021 카카오 채용연계형 인턴십
제출 답안
function solution(s) {
let answer = '';
const k = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
let tmp = '';
for (let i = 0; i < s.length; i++) {
if (isNaN(s[i])) {
tmp += s[i];
if (k.includes(tmp)) {
answer += k.indexOf(tmp);
tmp = '';
}
} else {
answer += s[i];
}
}
return answer * 1;
}
풀이
- 매개변수 s를 전체 탐색하기 위해 s의 길이만큼 for 반복문 실행
- i를 활용하여 s의 첫 글자부터 끝까지 확인(s[i])
- s[i]가 Number 유형이 아니라면(소문자 알파벳이라면) 임시저장 공간 tmp에 s[i]를 더해준다.
- tmp에 영단어가 배열 k 원소 중 존재하는 특정 단어가 완성되면 해당 영단어와 대응되는 숫자 값을 answer에 더해주고, tmp는 비워준다.
- s[i]가 Number 유형이라면 answer에 그대로 s[i]를 더해준다.
- answer에 모인 값의 유형은 String이기 때문에 1을 곱해주어 Number로 바꾸고 solution 함수를 반환해준다.
학습내용
배열의 인덱스 활용하기
- 배열 k는 영단어와 0부터 9까지 숫자 값을 대응시켜주는 용도로 사용했다.
- k의 원소 값과 해당 원소의 인덱스 값이 서로 일치하기 때문에 indexOf() 메서드를 활용했다.(ex. k.indexOf('three') === 3)
Number 유형 판별하기 - isNaN() 함수 사용
- isNaN(value)은 매개변수(value)가 NaN이면 true를 반환, 아니면 false를 반환하는 함수다.
- 해당 문제에서는 s[i]가 알파벳인지 숫자인지 확인을 하는 데 사용한다.(숫자면 NaN이 아니기 때문에 true를 반환)
- ECMA2015에서 추가된 Number.isNaN() 메서드가 더 강력하다고 한다.
'Algorithm' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 with Javascript (0) | 2022.04.02 |
---|---|
[프로그래머스] 키패드 누르기 with Javascript (0) | 2022.03.26 |
[프로그래머스] 크레인 인형뽑기 with Javascript (0) | 2022.03.23 |
[프로그래머스] 실패율 with Javascript (0) | 2021.12.21 |
[프로그래머스] 다트게임 with Javascript (0) | 2021.12.17 |