brice2000   2년 전

test case도 다 통과했는데 대체 뭐가 틀린걸까요...... 40분째 붙잡고 있는데도 전혀 감이 안옵니다 8ㅁ8 어디 부분에서 틀렸는지라도 알려주시면 감사하겠습니다!

bluejoyq   2년 전

오류가 나는 예시를 찾았습니다.

입력

1-1+01

정답

-1

입력

1010-10101+01010+000

정답

-10101

근데 제 코드도 이 두번째 예제를 입력하면 오류가 나네요. 왜그럴까요....

일단 오류가 나는 원인은 현재 -를 기준으로 split하셔서 0으로 시작하는 숫자를 거르고 계신데,

+로 연결되있는 숫자의 뒤에 존재하는 0으로 시작하는 숫자는 0으로 시작하는 것을

필터링 하지 않고 있어 eval함수에서 에러가 발생하는 것 같습니다.

wizardrabbit   2년 전

여러 번 디버깅해봤는데, 정말 오류를 찾기 힘드네요.

그래도 확실하게 알아낸 것은 17번째 줄의 eval() 부분부터 특정 테스트케이스에 반응하여 오류가 발생한다는 사실입니다.

첨부한 코드는 17번째 줄부터의 코드를 대체하는 코드입니다. '3+2+4' 와 같이 숫자와 '+' 로 구분된 문자열을 split('+') 로 나눠서 더하거나 빼는 방식으로 해결했습니다.

제가 첨부한 코드의 3~4번째 줄은 첫 번째 원소('-' 가 나오기 전)를 '+' 를 기준으로 쪼개 더하고, 6~8번째 줄은 나머지 원소('-' 가 나온 이후)를 '+' 기준으로 쪼개 빼는 방식으로 계산하는 코드입니다.

다른 방법이지만 이런 방법도 있다는 것을 참고하실 수 있도록 올려둡니다. 그리고, eval()은 위험할 뿐만 아니라 오류를 발생시키는 주범이니 정말 필요한 상황이 아니면 사용은 지양하시는 것을 추천드립니다.

brice2000   2년 전

와.... 저는 도저히 해결방법이 안보였는데 +가 문제였군요... 두분 덕분에 교훈 얻고 갑니다! 감사합니다!

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