본문 바로가기

PS/백준

[13397] 구간 나누기2

반응형
13397

문제 링크

주어진 배열을 M개로 나누었을 때 구간의 점수들의 최댓값의 최솟값을 구하는 문제이다.

예를 들어, 배열이 [1, 5, 4, 6, 2, 1, 3, 7] 이고, M = 3인 경우가 있다.

이때, [1, 5], [4, 6, 2], [1, 3, 7]로 구간을 나누면 각 구간의 점수는 4, 4, 6점이 된다. 이때, 최댓값은 6점이다.

만약, [1, 5, 4], [6, 2, 1], [3, 7]로 구간을 나누었다면, 각 구간의 점수는 4, 5, 4점이 되고, 이때 최댓값은 5점이 된다.

 

이 문제를 풀기 위해 아래의 방법으로 접근했다.

  • 먼저 최솟값을 설정하고, 이 최솟값을 만족하기 위해 배열이 몇 개로 나누어지는지 구한다.
  • 나누어진 배열의 갯수가 M보다 크다면 목표 최솟값을 높이고, M보다 작다면 목표 최솟값을 낮춘다.

주어진 배열을 M개로 나누어가며 최솟값을 구하지 않고, 목표 최솟값을 변경해가며 배열이 M개로 나누어지는 경우를 탐색하는 것이다.

코드는 아래와 같다.

 

 

반응형

'PS > 백준' 카테고리의 다른 글

[2156] 포도주 시식  (0) 2020.04.16