예를 들어 , 범위가 0~10만 이라면
int[] arr = new int[100001];
배열 범위를 10만+1 주는게 맞는거 같은데
int[] arr = new int[100005];
풀이 같은데 보면 10만+5 뭐 이런식으로 조금 더 주는 걸 많이 본거같아서요.
궁금합니다
예를 들어 , 범위가 0~10만 이라면
int[] arr = new int[100001];
배열 범위를 10만+1 주는게 맞는거 같은데
int[] arr = new int[100005];
풀이 같은데 보면 10만+5 뭐 이런식으로 조금 더 주는 걸 많이 본거같아서요.
궁금합니다
실수로 넘어서 접근해도 런타임 에러도 방지하고 0으로 초기화 되잇으면 운 좋게 어물쩡 넘어갈 수 있음
그럼 보험같은건가요? 좋지않은 습관인가요?
개인 취향이겠지만 PS 할 때 메모리 몇 더 잡는다고 손해볼꺼 없으니까 실수 방지하는 좋은 습관임
1-index인 경우에도 문제 없이 돌아가고, 내가 생각치 못한 초과된 경우에도 대처할 수 있음. 예를들어 dp[i+x] = dp[i] + y 이런 dp식이 있을 때 x 범위가 [0..5]인데 이걸 실수로 생각 못하고 그냥 1e5+1로 잡아버리면 런타임 오류 발생. 이런 경우가 은근히 있어서 많이 잡아줘서 나쁠 건 없음
이유가 있었군요 다들 답변 감사합니다 ㅎ
대회때 실수하면 안되니까가 첫번째고 가끔씩 끝쪽에서 경우의 수를 줄여서 코드를 간편하게 만들기 위해서가 두번째
비슷한 아이디어로 BFS 같은거로 2D 격자판에서 탐색할때 1<=x<=N 1<=y<=M 체크할때가 있는데 귀찮아서 네 변에 -1 같은거 미리 채워놓고 체크하는 방법도 있음
조심해서 나쁠건업지
걍 실수용임 ㅇㅇ