sourish92   5년 전

안녕하세요.

제목 그대로.. 시간 초과가 나는 이유를 도저히 모르겠습니다..

중간 mid값 연산 과정에서 int 범위를 넘어갈 수 있기 때문에 long long으로 타입 캐스팅을 해주고 처음 코드를 제출했더니 시간초과가 났습니다.

아무리 생각해도 O(nlgn)이라서 시간초과가 나지 않을 것 같은데 계속 코드를 수정하다가

전체를 long long 형으로 제출했더니 AC를 받았습니다. 하지만, 정답을 맞춘이후에도 아래의 코드가 왜 시간초과가 발생하는지 모르겠습니다..ㅠㅠ 이유를 아시는 고수님들 도와주시면 감사하겠습니다..ㅠㅠ

left = m+1에서 m이 0x7fffffff이면 int overflow가 발생하고, 그 overflow로 인해 left와 right의 값이 왜곡되어서 while문을 탈출하지 못하네요.

1 1 2147483647

sourish92   5년 전

아...mid부분이 아니라 거기서 시간초과가 나는거였군요..

정말 감사합니다 ㅜㅜ 왜때문인지 몰라서 분해가지고 잠도 못잘 뻔했어요 ㅜㅜ 정말 감사합니다ㅜㅜ 복 받으실거에요

중간중간 assert문 잘 이용하시면 원인 찾는데 도움 많이 될거에요

sourish92   5년 전

네!! 좋은 정보 감사합니당 ㅎㅎㅎㅎㅎㅎㅎㅎ 

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