한 걸음씩
[프로그래머스][JS] 숨어있는 숫자의 덧셈 (2) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/120864
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(my_string) {
// my_string = "aAb1B2cC34oOp"
let number = '';
for (str of my_string){
if (!isNaN(parseInt(str))){ // str을 정수로 변환했을 때 타입이 숫자가 아니라면 ~
number += str
}else{
number += ' '
}
}
// console.log(number) 1 2 34
const numberArray = number.split(' ').filter(item => item.length >= 1) // 숫자만 필터링
// console.log(numberArray) [ '1', '2', '34' ]
if (numberArray.length === 0){ // 문자열에 자연수가 없는 경우 0을 return 해주세요.
return 0
}
const total = numberArray.map(item => parseInt(item)).reduce((acc, cur) => acc + cur)
// console.log(total) 37 : 합 구하기
return total;
}
코드 설명은 주석처리 된 부분을 참고하면 된다.
리뷰
이 문제도 숫자가 두 개 나란히 나오는 경우에 이걸 어떻게 하나로 분리해야 하는지부터 막혀서 한참 걸렸는데
타입 체크 하는 방법을 몰랐었다
! isNaN으로 처리하면 되는 거였다! 숫자가 아닌 부분은 공백으로 처리해 주고 숫자만 있는 문자열 생성!
그리고 '자연수가 없는 경우 0을 return해라'라는 제한사항이 있었는데 이 부분을 읽지 않아서 계속 테스트 8에서 런타임 에러가 발생했고
진짜 거의 한 시간을 고민했는데... 제한 사항을 똑바로 읽지 않아서 예외 처리를 하지 않았던 것,,,
for문을 돌리면 안 되는 건가 싶어서 정규식 가져다가 해봤는데 그것도 아니고 삽질 오래 했다... 문제를 똑바로 읽자!!!
정규식을 사용하면 코드가 정말 짧아지는데 아직 정규식을 배우지 않아서 pass
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 한 번만 등장한 문자 ✅ (0) | 2023.06.08 |
---|---|
[프로그래머스][JS] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2023.06.08 |
[프로그래머스][JS] 수박수박수박수박수박수? (0) | 2023.06.07 |
[프로그래머스][JS] 수열과 구간 쿼리 3 (1) | 2023.06.06 |
[프로그래머스][JS] 수열과 구간 쿼리 1 ✅ (0) | 2023.06.06 |