:: ADVANCE ::

[BaekJoon][2613] 숫자구슬 본문

Algorithm/Binary Search

[BaekJoon][2613] 숫자구슬

KSJ14 2016. 9. 5. 07:18
반응형

BAEKJOON ONLINE JUDGE


한국정보올림피아드 시.도 지역본선 2004


2613 숫자구슬


https://www.acmicpc.net/problem/2613




최대값의 최소값이라는 말을 보고 이진탐색이라고는 생각하였지만 처음에는 DP로 접근해 보았다.

DP로도 풀이가 생각났기 때문에..


dp[start][group] : start 지점부터 끝까지 group의 개수만큼 나누었을 때 그 합 중 최대값의 최소값을 저장

그룹 하나, sum값과 그 외의 구간을 group - 1개로 나누었을 때 나오는 최소값 중 최대값들 중에서 최소값을 저장해 나갔다.

그리고 저장해 나가면서 그 최소값이 되는 구간의 구슬 개수 또한 저장해 나갔다.


sum 값은 입력을 받으면서 이중 반복문으로 sum[start][end]에 미리 저장

시간은 4ms




2. Binary Search

아무튼 이 문제는 최대값의 최소값을 찾는 문제로 Binary Search !!

정답이 될 값을 이진 탐색으로 찾아들어가며, 질답은 최대값이 middle 일 때 나눈 구간의 개수가 m보다 크면 left = middle + 1 부터, 나눈 구간의 개수가 m 이하이면 right = middle - 1로 답이 될 수 있는 구간 이동.

이 때, m으로 나눌 수 있을 때의 middle (정답 후보) 중 최소값이 최종 정답이다.

구슬의 개수는 질답할 때 구간 나누듯이 마지막에 한 번 더 출력

시간은 0ms



반응형

'Algorithm > Binary Search' 카테고리의 다른 글

[BaekJoon][2512] 예산  (0) 2016.10.01
[BaekJoon][1920] 수 찾기  (1) 2016.09.27
[BaekJoon][2110] 공유기 설치  (0) 2016.06.26
[BaekJoon][2805] 나무 자르기  (0) 2016.06.26
[BaekJoon][1654] 랜선 자르기  (0) 2016.06.26
Comments