본문 바로가기

코딩테스트

[백준(Baekjoon) 2805번](Python) 나무 자르기

<첫번째 내코드>

 

<성공 코드>

 

<풀이과정>

이분법을 이용하여 첫,끝 점을 잡고 중간값을 기준으로 나무들을 잘랐을때 잘라진 나무 길이 값이

주어진 M보다 크면 시작점을 중간값 보다 하나 증가시켜주고 위와 같은 방식으로 반복, 작으면 

중간값보다 하나 작은값으로 끝값을 두고반복하다 보면 원하는 값이 나오게 된다.

 

<느낀점>

첫번째로 맨 위의 코드로 풀었는데 길이순으로 나무를 정렬 한 뒤, 나무들의 길이에 따라

잘라 사잇값에서 찾게끔 하였다(ex).(두번째나무길이 - 세번째 나무길이)+(첫번째 나무길이-

세번째 길이 나무)한 값이 M보다 크면 두번째 나무 길이와 세번쨰 나무길이 사이에서만 찾으면 되는

알고리즘을 구상하였다. 하지만 나무의 길이은 어떻게 치중되어 있을지 모르는 상황이기 때문에

내가 구상한 알고리즘보다 이분법을 사용하는게 훨씬 좋은 방법인 것 같다.