CodongCodong   5년 전

제가 좌표를 이차원 배열로 저장했는데 int 배열로 하면 시간초과가 나고 long long으로 하면 시간초과가 안 나더라고요...

좌표의 절댓값이 100000000을 넘지않아 int로도 충분하다고 생각했는데 왜 시간초과가 나는 것인가요?

벡터 내적을 계산하는 과정에서 범위를 초과할 수 있을 것 같아 내적값은 long long으로 뒀는데도 형변환을 강제로 해줘야 제대로 되네요.

반복문에서 인자가 오버플로가 나서 무한루프를 돌게 되는 경우는 봤지만 이 코드는 단순 조건문이라 그런 일도 없을 것 같은데 말입니다.

조건문 속의 값이 오버플로 되는 상황과 시간초과가 무슨 관련이 있는지 궁금합니다!

djm03178   5년 전

이 영향이 얼마나 클지는 모르겠지만, int를 자꾸 long long으로 변환하는 것도 작업이기 때문에 약간 더 시간이 소요될 수는 있을 것 같습니다.

그리고 계산 순서를 봤을 때 형변환은 왼쪽 둘의 곱에는 적용되지만 오른쪽 둘의 곱은 int인 채로 수행되고, 이후에 두 결과를 더할 때 비로소 long long으로 변환됩니다.

CodongCodong   5년 전

아 형변환에 시간이 걸릴수도 있겠네요.... 감사합니다!

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