백준/이걸 몰랐네

예제 입출력은 분명 맞는데 틀렸다고 할때 대처법

발전생 2020. 8. 31. 23:49

백준 문제를 풀다보면 예제 입력을 여러개 넣어봤고 출력도 홈페이지에 나와있는 거랑 똑같은데 막상 채점을 해보면 "틀렸습니다"라는 잔인한 글씨를 보여주는 경우가 있다.

 

아마 문제를 보면 N<=100 혹은 N<=1000 같이 꽤 큰 수도 입력이 가능할 것이다.

그런데 문제의 예제 입출력을 보면 대부분 N이 작을 때만 나와있다.

그러니 N을 10 단위(적당한 정도)로 늘려가면서 결과 값을 보라.

분명 음수 값이 나오면 안되는데 음수 값이 나오는 경우가 있을 거다.

 

이는 보통 int 변수를 사용할텐데 int 변수가 담을 수 있는 한계를 넘는 수를 집어넣으려 했기 때문에 그 수는 넘쳐 마이너스 범위부터 다시 계산한 것이다. 요즘 DP(다이나믹 프로그래밍) 문제를 풀고 있는데 이 같은 경우가 종종 있었다.

 

각 자료형별 범위를 볼 수 있는 주소를 적어놨다.

https://docs.microsoft.com/ko-kr/cpp/cpp/data-type-ranges?view=vs-2019

 

데이터 형식 범위

데이터 형식 범위Data Type Ranges 이 문서의 내용 --> Microsoft c + + 32 비트 및 64 비트 컴파일러는이 문서의 뒷부분에 나오는 표의 유형을 인식 합니다.The Microsoft C++ 32-bit and 64-bit compilers recognize the types

docs.microsoft.com

 

int는 약 20억인데 이걸 넘는 경우가 꽤 자주 있다.

그러니 이럴 경우에는 안전하게 가장 범위가 큰 자료형을 사용하자.

그것은 long long~ 억조를 넘어 경까지 품을 수 있을 정도로 범위가 크다.