백준 13305: 주유소 (그리디 / with C)
C언어로 풀이할 때 숫자의 범위를 신경써줘야하는 게 Point인 문제였다. 각 도시 리터당 가격이 10억 이하의 자연수이고, 맨 왼쪽 도시에서 맨 오른쪽 도시까지 거리의 합이 10억 이하인데, 이들을 더해나가는 과정의 결괏값을 담을 result 만 long long(8Byte)로 처리해주면 된다고 생각하면 오류를 일으키게 된다. 23째 줄을 보면, long long 자료형의 result에 int형 변수인 now_min과 edges[i]를 곱해서 더해준다. 만약 두 int형 변수를 타입 캐스팅 없이 곱하게 되었을 때, int형의 표현 가능 범위를 넘어갈 수 있고, 이 때 값에 왜곡이 일어날 것이다. 조심할 것이, (long long) (now_min * edges[i]) 와 같이 해도, 값이 달라질 것이다..
C알고리즘
2023. 9. 29. 18:23