코딩테스트

코딩테스트 풀이 - 숨어있는 숫자의 덧셈(1) | isNaN()

히새 2023. 11. 2. 18:06

 

1. 빈 배열을 만들어준다.

2. my_string 글자 하나하나를 빈 배열에 넣어준다.

3. 반복문 + isNan 을 사용해 숫자인 것만 넣어준다.

4. 숫자들을 다 더한 값을 구해 반환한다.

 

2번과 3번을 합쳐서 할 수 있을까?

 

작성하다보니 더 좋은 방법이 떠올라서 글자 하나하나를 배열에 넣어준 뒤, 반복문을 돌려 바로 숫자인지 아닌지 검사하고 더해주었다

 

if 문에서 오류가 나왔다. 왜지.. forEach 안에서도 if 문 사용가능한데 왜 이러는걸까!

계속 계속 찾아보다가 결국 뤼튼이에게 물어봤다........ 너무 답답해서ㅠㅜ

 

forEach 함수의 콜백에서는 화살표 함수를 사용할 때, 본문에 여러 개의 문장이 있는 경우 중괄호 {}로 묶어주고, return 키워드를 사용해야 합니다. 그러나 여기서는 if 문이 포함된 복잡한 로직을 사용하고 있으므로, 중괄호를 사용해야 합니다.

 

라고 한다... 아하. 콜백에서 화살표 함수를 사용할 때, 본문에 여러 개의 문장이 있는 경우에는 중괄호로 묶어줘야 하는구나!!!

 

그리고 이 코드에서 한 가지 문제점이 더 있었다.

바로 array 에 담겨있는 각각의 item 이 문자열이라서 answer 이 기댓값과 다르게 나온다는 점이었다.

문자 -> 숫자 형 변환을 해주었다.


 

🎈 isNaN()

 

isNaN() 함수는 어떤 값이 NaN 인지 판별한다.

isNaN(value);

 

value 값이 NaN이면 true, 아니면 false이다.

= value 값이 숫자가 아니면 true, 숫자이면 false 이다.

( 그래서 입력한 코드에서는 부정연산자 ! 를 추가해 true 값일 때 실행 결과로 입력해주었다. )

 

isNaN 함수는 몇몇 혼란스러운 케이스를 가지고 있으므로, 더 엄격한 버전인 Number.isNaN() 으로 바꾸는 것이 좋을 수도 있다.