qmamsm123   3년 전

세준이는 양수와 +,-,그리고 괄호를 가지고 길이가 최대 50인 식을 만든 후 괄호를 모두 지웠다고 문제에 나와 있습니다.

이 내용에 따르면 주어질 문자열의 길이는 51을 넘지 않을 것이라고 생각이 됩니다.

http://boj.kr/4a253ace57b9475d... 에서 길이가 51인 char 배열로 입력을 받았을 땐 틀렸다고 나오지만,

http://boj.kr/6e9364fcba1a44e0... 에서 string으로 입력을 받았을 땐 맞았다고 나옵니다.

제 생각에는 입력으로 주어진 문자열의 길이가 51이 넘어서 일부가 잘려 처리되어 오답이 나온 것 같습니다.

길이가 최대 50이라는 표현이 수정되어야 하지 않을까요?

bupjae   3년 전

첫 번째 프로그램의 17번째 줄에서 시작하는 반복문은 문자열의 실제 길이와 관련없이 무조건 51번 실행합니다.

즉, 문자열의 뒤에 있는 쓰레기값도 반복문을 돌게 됩니다.

jh05013   3년 전

이런 조건을 확인할 때에는 assert 구문을 사용하시는 것이 훨씬 확실합니다.

qmamsm123   3년 전

range-based for 구문에서 문자열을 돌릴 때 널문자가 나오면 반복을 종료하는 줄 알았는데 몰랐네요.

다음부턴 assert 구문으로 확실히 확인해보겠습니다.

답변 모두 감사합니다. 

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