muzigae   1년 전

지문에 You can assume that no operation overflows a 32-bit integer.라는 설명이 있습니다.

그런데 해당 문제를 C++에서 int 자료형 정수를 사용해 풀이할 경우 오답이 나옵니다.

수정이 필요해 보입니다.

seawon0808   1년 전

계산 과정에서 overflow가 생길 수도 있습니다.

저는 c로 풀었는데 int를 사용해도 정답입니다.

eric00513   1년 전

seawon0808님 말씀이 맞습니다.

제 코드도 int로 작성되어 있는데요, 다음 두 조건 때문에 int로 풀리는 것 같습니다.

1) 모든 정수는 106 미만;

2) 어떠한 연산도 32-bit에서 오버플로우가 발생하지 않음.

1) 조건 때문에 64-bit 정수가 필요하다고 생각될 수는 있지만 2) 조건을 만족하려면 답이 32-bit 범위 내에 들어가야 합니다.

실제로 데이터 파일의 입력값은 1111이 최대이고 이때 정답은 대략 4억(<231) 입니다.

그러나, 개인적으로 2)의 설명을 출력 부분이나 문제 부분으로 옮기고 "You can assume that the answer is less than 231"으로 수정되면 좋을 것 같습니다. 합 공식으로 해결하면서 64-bit 정수를 사용할 수도 있으니까요.

jh05013   1년 전

> 그러나, 개인적으로 2)의 설명을 출력 부분이나 문제 부분으로 옮기고 "You can assume that the answer is less than 231"으로 수정되면 좋을 것 같습니다. 합 공식으로 해결하면서 64-bit 정수를 사용할 수도 있으니까요.

동의합니다. 연산은 푸는 사람이 정해서 쓰는 것이기 때문에 "no operation overflows a 32-bit integer"라는 조건은 말이 안 됩니다. 32-bit integer라는 표현 또한 바람직하지 않습니다.

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