1. 책에 적힌 문제 내용과 달리 온라인 사이트애서는 "최대 s개의 수로 양자화할 떄"라고 적혀있다.즉, s개의 수를 모두 안 써도 된다.
2. 반올림이 제대로 수행되고 있는가?
(정수 변수)/(정수 변수)를 하게 되면 소수점 부분은 모두 버리게 된다.
그러니 0.5+(정수 변수)/(정수 변수)를 해도 제대로 반올림이 되지 않는다.
예를 들어 1505/3을 하면 결과는 501.66666이므로 반올림 하면 502여야 한다.
그러나 0.5+(1505)/(3)을 컴퓨터에서는 0.5 + 501로 계산한다. 여기에서 int 자료형으로 만들어줘봤자 버림 해서 501이다.
그러므로 반올림할 때는
(int)(0.5+(double)(정수 변수)/(정수 변수)) 형식을 사용하자.
3. sort의 범위를 제대로 주었는가?
배열이나 벡터를 사용했을 경우 크기를 많이 할당해놓고서 전 범위에 대해 sort를 수행하는 실수를 해서는 안 된다.
예를 들어 벡터가 {1, 1, 5, 5, 6, 6, 9, 8, 0, 0, 0, 0, 0, 0, 0}로 초기화 되어 있을 때
sort(vec.begin(), vec.end())를 사용하면 0으로 의미 없이 초기화된 값들이 앞에 오게 된다.
sort(vec.begin(), vec.begin() + 원하는 size)를 사용해야 한다.
생각 없이 코드 짜다 개미지옥에 빠지지 말자.(퍽)