계산 과정 중에 make 변수도 int 범위를 넘어설 수 있습니다.
long long 으로 바꿔보세요.
1654번 - 랜선 자르기
1.
cut2의 초기값은 lan 배열 중에 제일 큰 값을 사용하여야 합니다.
실제로 K=1 이라면 제일 큰 랜선 하나만 그대로 사용하는게 답이 되기 때문이죠.
2.
cut1의 초기값은 1이상이어야 합니다.
cut1의 초기값을 0 으로 주면 실제로 cut이 0이 되는 경우가 생기고
이러면 0으로 나누는게 돼서 런타임에러가 나겠죠.
3.
이분탐색을 저런 식으로 하실거면
조건문을 cut1 <= cut2 로 바꾸시고 (역전되는 경우가 생깁니다)
마지막 답은 cut을 사용하는게 아니라 cut2를 사용해야 합니다.
왜 이렇게 해야하는지는 그림을 그려서 한번 잘 생각해보세요.
kdy님.
결정 함수를 따로 만들어 보아요.
저는 이분탐색 문제를 풀 때
무조건 결정함수 f(x)를 만듭니다.
정렬되어 있는 배열에서 1보다 작은 최초의 지점을 리턴해야 한다고 쳐 봅시다.
결정해야 하는 건 1보다 작은가죠?
int f(x) {
return (arr[x]<1);
}
댓글을 작성하려면 로그인해야 합니다.
kdy312 6년 전
이분탐색으로 해결할 수 있는 문제들이 많아서 공부를 하고 문제를 풀고있습니다.
처음에는 시간초과가 떳기 때문에 이를 수정하였더니 드디어 틀렸습니다가 나오기 시작했습니다.
그런데 왜 틀렷는지 감이 잡히지가 않습니다
이분탐색이 잘못된것인지, 아니면 어디가 잘못된 것인지 모르겠습니다 ㅠ