문제 출처
https://www.acmicpc.net/problem/11660
백준을 풀다가 맞왜틀!?의 함정에서 벗어 나지를 못하였다.
아니나 다를까 자료형의 문제였다.
최종 결과 SUM 변수는 long long형으로 선언을 하였고, 정수를 담을 배열(num)은 INT형으로 선언을 했다.
그러나 여기에 고약한 논리적 함정이 있었다.
우선 int형의 크기는 플랫폼마다 다르다. 예를 들어, 32bit 체제일 떄는 4 byte이고, 64bit 체제일 때는 8 byte이다.
그러나, long long 형은 어떤 플랫폼에서도 4 byte로 고정된 크기이다.
나는 위 사실을 간과하여서 long long 형인 sum에 int형의 정수를 대입을 하였다.
이렇게 되면, 4 byte의 변수에 8 byte가 대입되어 자료형 에러가 날 수가 있다.
백준의 채점 플랫폼이 뭔지는 모르지만, int형 sum을 다시 long long으로 정의를 했을 때, 맞은 걸로 보아서는 백준의
채점 플랫폼은 64 bit체제여서 에러가 계속해서 났던 것 같다.
자료형의 문제를 최소화하기 위하여, 대입하는 변수끼리는 최대한 같은 자료형으로 선언하자.
'알고리즘(アルゴリズム) > 알고리즘 이모저모(アルゴリズムの緒論)' 카테고리의 다른 글
재귀 함수(recursive function) with 꼬리 재귀(tail recursive) (0) | 2023.01.26 |
---|---|
[Hash Table vs Hash Map vs 배열] vs Linked List (2) | 2023.01.26 |
conanical coin system (0) | 2023.01.04 |
반례(counterexample)를 자동으로 찾아 주는 코드(Python/C) (0) | 2022.12.18 |
수열에서 중앙값을 최적으로 구하는 알고리즘(백준 1655번) (0) | 2022.12.18 |