[문제풀이] int, long long 오버플로우, 시간초과 관련 미세 팁
2023. 8. 6. 17:11ㆍ알고리즘/문제풀이
int 자료형으로 표현 가능한 숫자는 210,000,000(21억) 언저리까지이다. 그 이상의 숫자는 오버플로우가 발생하므로 long long 자료형을 사용해야 한다. 내가 코딩하다가 숫자가 21억이 넘어갈지 안 갈지 어떻게 알아??라는 의문이 들 수 있다.
1. 먼저 알고리즘을 생각해본다. 사람마다 다르지만 나는 퍼수도코드로 짜고 시작한다.
2. 시간복잡도를 생각해본다. O(N*M) 이런 식으로 나온다면 N과 M의 최댓값을 기준으로 곱해서 생각하면 된다. 얼추 21억이 넘겠다 싶으면 안전하게 long long으로 짜는 편이 좋다.
3. long long으로 코드를 바꿀 때 콤팩트하게 확실하게 안 바꿔도 되는 자료형을 제외하고는 다 바꾸는 편이 좋다. 연산 중 자동 형변환이 일어날 수 있다.
시간초과도 비슷하다. 10^9연산이 대충 1초 정도라고 생각하면 된다. 로컬에서 예제를 최댓값으로 다 입력해 보고 대충 몇 초가 걸리는지 생각해 보는 것도 좋은 방법이다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[BOJ] C++ 9375 패션왕 신해빈 - 해시 맵 사용하기, 수학 (0) | 2023.08.09 |
---|---|
[BOJ] C++ 1744 수 묶기 - 조건에 따라 분류하며 정렬하기 (0) | 2023.08.09 |
[BOJ] C++ 15903 카드 합체 놀이 - 우선순위 큐와 오버플로우 조심하기 (0) | 2023.08.06 |
[BOJ] C++ 2470 두 용액 - 투 포인터, 정렬 (0) | 2023.08.05 |
[BOJ] C++ 7795 먹을 것인가 먹힐 것인가 - 투 포인터, 정렬 (0) | 2023.08.02 |