allmie   1년 전

예제에 있는 숫자로 확인해서 결과는 똑같이 나오는데,

왜 틀렸다고 나오는지 잘 모르겠습니다.

wizardrabbit   1년 전

안녕하세요? 해당 코드에 예제를 입력했을 때의 결과입니다:

입력:
472
385

출력:
NaN
NaN
NaN
NaN

▶ 틀린 이유 한 줄 요약: split()에서 데이터를 잘못된 구분자로 쪼갰습니다.

NaN은 Not A Number를 의미합니다. NaN이 발생하는 가장 큰 원인은, 바로 숫자가 아닌 무언가를 숫자로 바꾸려 했을 때입니다.

예제의 입력을 다시 봅시다:

"472\n385\n"

질문자님의 코드는, split()을 사용할 때 " ", 즉 공백 문자를 기준으로 쪼갭니다. 하지만 입력된 데이터에는 공백이 없으므로 데이터는 쪼개지지 않고 한 덩어리가 됩니다.

["472\n385\n"]

이후에는 쪼개지지 않은 해당 데이터에 그대로 parseInt()를 사용, 즉 위에서 설명했던 숫자가 아닌 무언가를 숫자로 바꾸게 되므로, 결과는 그 때부터 모두 NaN이 되어 틀리게 됩니다. 입력에서 숫자 두 개는 "\n" 을 사이에 두고 주어지므로, split()에서 입력된 데이터를 쪼개는 문자열은 " " 가 아닌 "\n" 가 되어야 할 것입니다. split("\n") 으로 데이터를 쪼개면 아래와 같이 데이터가 쪼개질 것이고, 그 다음부터는 제대로 동작할 수 있을 것입니다.

["472", "385", ""]

문제 해결에 도움이 되었기를 바랍니다!

allmie   1년 전

데이터를 구분할 때 공백을 줄바꿈으로 바꾸니 정상 작동합니다.

답변 감사합니다! 

댓글을 작성하려면 로그인해야 합니다.