백준 2805
나무자르기
(이분탐색)
풀이
이분탐색이라그래서
어제푼 문제 그대로 풀었더니
안되었다..
이 문제의 가장 우선적으로 중요한 점은
int가 아닌 long을 써야한다는 것이다.
입력이 2억까지인데.
int는 2의 32승으로 약 21억
하지만 합도 구해야하기때문에
long으로 해야한다.
그리고 주석에도 있지만
헷갈리는것은
등호 하나로 틀렸다.
비교하는 시작점~ 끝점을
무조건 while 조건문에 시작점이 >끝점보다 작을때까지
while조건문을 수행하도록 하였지만
그러면 시작점 = 끝점일 경우가 고려가 되지않아
틀렸다.
그리고 나무 크기를 자르는 것이 m의 값으로 딱
떨어지지 않을수도 있기때문에
m보다 클때의 값을 구해야한다.
그중에 가장 큰값.
기본적으로 이분탐색이기 때문에
lo와 hi를 두어야한다
(시작~끝)
그리고 중점을 잡아 비교해야한다.
중점이 곧 구하고자하는 값이다.
이 시작 / 끝을 정의를 잘하는 것도 필요한 것 같다.
저번문제에서는 인덱스로 정의하였지만
이번엔 나무의 길이로 정의하였다.
차근 차근 더 풀어보아야겠다
그럼
이만
뿅!
'DEVELOP > ALGORITHM' 카테고리의 다른 글
KOITP 정렬된 배열 (투포인터 알고리즘) 문제 (0) | 2018.06.04 |
---|---|
KOITP 아나그램 문제 풀기 (0) | 2018.06.04 |
백준 1920 수찾기 (이진탐색) (0) | 2018.02.04 |
백준 2003번 수들의 합 2 풀이 (0) | 2018.01.22 |
동적계획법이란(Dynamic Programming) (0) | 2017.11.30 |