c++이나 java와 같이 자료형이 존재하는 언어로 알고리즘 문제를 풀 때
const int INF = 987654321 과 같은 정수형을 선언할 때가 있다.
고찰 - 어떤값을 사용해야 잘 사용했다고 소문이날까?
일단 내가 사용하는 max값은 주로 0x3f3f3f3f 라는 16진수를 사용하고있다.
0x3f3f3f3f(16) = 1061109567(10) 이다.
이 수는 10억이 살짝 넘는 수이고 2를 곱했을때 2^31을 넘지 않는 수이다.
(degurii.tistory.com/ 블로그 관리자가 알려줬다 ^-^) 이거 홍보임 암튼 홍보임
데구리 블로그
웹 개발과 알고리즘을 공부합니다.
degurii.tistory.com
그렇다면 다른 값으로는 무엇이 있을까?
int MAX = 987654321; 을 보자
만약 테스트 케이스가 맥시멈으로 10억이 들어왔다고 생각해보자.
예를 들면 간단하게 "n = 100000이고 최대값이 10000이고 여러 구간중 가장 큰값인 경우" 를 보자
모든 값이 10000이라면 답은 10억이다. 터진다.
특수한 경우지만 만약 정말 이런 테스트 케이스가 문제에 있었다면?
=> 디버깅 하기가 힘들다.
int MAX = INT_MAX;
INT_MAX 와 같은 최대값이나 최소값이 정의된 상수들은 일단 헤더파일이 있어야한다.
(#include <limits.h> / #include <climits>)
추가하기 귀찮다. 물론 #include <bits/stdc++.h> 사용하면 상관없다.
그리고 만약 잘못해서 MAX에다가 1이라도 더했다간 바로 오버플로우 ㄷㄷ;;
사실 어떤것을 사용하던 자기 코딩스타일에 맞추면 된다.
내가 최대한 오류를 안낼 수 있는 방향을 선택하는게 좋은 것 같다.
하지만 나는 위에 소개한 블로그 주인의 말을 듣고 0x3f3f3f3f를 사용한다.
0x 십육진수에 3f네개 왜?? int형은 32비트니까 4비트 짜리가 8개가 들어간다.
(16진수에서 1자리는 4비트이므로)
쓰기 편하다 추천!
'Programming' 카테고리의 다른 글
(고찰) version 표기법 (0) | 2021.07.12 |
---|---|
(고찰) vim에디터 (0) | 2021.02.25 |