수정본있음
function solution(my_string) {
let a = my_string.split('')
let array = [];
array.push(a.filter(e => isNaN(e) === false))
return array.flat().reduce((acc, cur) => parseInt(acc) + parseInt(cur))
}
프로그래머스 스쿨 0 단계 숨어있는 숫자의 덧셈이다
이것도 좀 오래묵혀놨었는데 다시푸니까 금방 풀렸다
일단 my_string을 하나하나씩 잘라서 숫자들만 찾아야했고 split으로 잘라서 배열에 넣었다
filter와 isNaN을 통해 숫자인지 아닌지 판별하였다
isNaN은 Not a Number 라서 string형식으로 되어있어도 안에있는게 숫자면 false를 반환 글자면 true를 반환한다
그리고 배열 상태가 중첩이라 [ [ val, val, val] ] flat() 을 사용해서 한겹으로 만들었는데 이건 굳이 중첩상태 안만들수 있었는데 하면서 수정했다
function solution(my_string) {
let a = my_string.split('')
let array = a.filter(e => isNaN(e) === false)
return array.reduce((acc, cur) => parseInt(acc) + parseInt(cur))
}
훨씬 더 깔끔해졌다...
마지막으로 filter와 isNaN을 통해 걸러낸 배열의 값들을 각각 더해야하는데 누산기능있는 reduce를 사용하였다
isNaN으로 안의 값이 int인지 str 인지 감별을 했다지만 아직 str형태이기때문에 parseInt를 통해서 int로 바꿔주었다.
사고의 진행은..
이건 처음봤을때부터 어떤 방식으로 가야하겠다 하는게 바로바로 나와버려서 ... 딱히 쓸건없지만
일단 분리하자.. 그리고 걸러서 거른것만 더하자... 라는생각을 전제로 기억나는 함수들을 다 가져다 썼다...