15번째 줄 코드를
while (left <= right)
{
list[left] = sorted[left];
left++;
}
로 바꾸면 통과가 됩니다만..
기존코드와 차이점을 도저히 못찾겠습니다..ㅠㅠ
2751번 - 수 정렬하기 2
c++은 연산자 실행 우선순위가 정해져 있지 않은 부분이 많습니다. f(a)+g(b)를 구하려고 해도 두 함수 중 어떤 것이 먼저 호출될지 정해져 있지 않습니다. 더 최적화하기 좋은 쪽으로 컴파일러가 선택할 수 있게 하기 위함입니다.
a[s] = b[s++]로 적으면
s++가 언제 실행될지 알 수 없습니다. 보장되는 것은 b[s]를 읽은 후에 s+=1이 된다는 것 뿐 a[s]에 더할지 a[s+1]에 더할지를 알 수 없습니다. 그래서 값을 바꾸는 s++, --i 같은 것들은 그 변수가 식 전체에 한 번만 사용될 때만 권장합니다.
댓글을 작성하려면 로그인해야 합니다.
sctm1219 2년 전
도움이 필요합니다...
제 머리로는 어디가 틀린 것인지 모르겠습니다.