yumin   2년 전

질문글에 나오는 반례도 다 통과하고, 검색도 해봤는데도 틀린 이유를 못찾겠어요ㅠㅠ

wizardrabbit   2년 전

안녕하세요? 반례 드립니다:

입력:
1
()

정답:
YES

출력:
YES
YES

확인 결과, 논리에 오류는 없었으며 trim()을 사용하지 않아서 생긴 문제로 보입니다.

현재 코드의 경우 입력값에 불필요한 줄바꿈 문자가 포함되어서 프로그램이 스택 문자열이 하나 더 있는 것으로 인식해 검사를 한 번 더 진행하고 있습니다.

질문자님께서는 아래와 같이 데이터가 처리될 것이라고 예상하셨겠지만:

"1\n()" -> ['1', '()']

실제로는 아래와 같이 데이터가 처리되고 있습니다:

"1\n()\n" -> ['1', '()', '']

node.js 특성상 저장되어 있는 파일을 읽어오는 방식으로 데이터를 읽기 때문에, 그냥 가져오면 불필요한 공백이나 줄바꿈 문자가 포함될 수 있어요.

trim() 은 문자열 양 끝에 붙어있는 불필요한 공백과 줄바꿈 문자를 제거해 의도치 않은 오류나 결과가 나오는 것을 방지할 수 있습니다.

쓰지 말아야 할 극소수의 상황을 제외하고는, 문자열 데이터를 다룰 경우에는 trim() 사용을 적극 권해드립니다!

Q. 위의 입력을 제 코드에 넣어보았는데 제대로 나오는데요?

F12를 눌러서 나오는 개발자 도구를 사용 중이실 경우 디버깅 결과가 다르게 나올 수 있습니다. https://www.jdoodle.com/execut... 같은 Node.js 전용 IDE 사용을 적극 추천합니다.

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