문제
코드
#include <iostream>
using namespace std;
int main()
{
unsigned int n;
cin >> n;
cout << n * 4 << endl;
return 0;
}
풀이
정말 간단한 문제지만 오답률이 조금 있었던 것이 바로 범위를 파악하지 못했기 때문입니다.
그냥 int n; 으로 하면 되지 않을까? 라고 생각할 수 있지만 주어진 입력 범위가 1 <= n <= 10^9 입니다. 이 범위는 매우 큰 값이며 양의 정수입니다. int는 10^9까지 받을 수 있는데요. 근데 여기에다가 둘레를 계산할 때 n * 4가 되기 때문에 int의 범위를 넘어가게 되는 것입니다.
따라서 해당 경우에 오버플로우가 발생하게 됩니다. 그러기 때문에 unsigned int 를 사용하면 됩니다.
unsignedint는 0부터 4,294,967,295 범위의 수를 사용가능한 것입니다.
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[c++] 5073번 삼각형과 세 변 (0) | 2024.06.01 |
---|---|
[c++] 10101번 삼걱형 외우기 (0) | 2024.06.01 |
[c++] 백준 3009번 네 번째 점 (0) | 2024.06.01 |
[c++] 1193번 : 분수찾기 (0) | 2024.05.30 |
[c++] 백준 2292번 : 벌집 (0) | 2024.05.30 |