BOJ 2343 기타 레슨

2020. 9. 15. 00:22·알고리즘/BOJ

www.acmicpc.net/problem/2343

 

2343번: 기타 레슨

강토는 자신의 기타 레슨 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 레슨이 들어가는데, 블루레이를 녹화할 때, 레슨의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경��

www.acmicpc.net

이번에도 파라메트릭 서치 문제다. 이번엔 반복문의 시작을 음반에서 가장 큰 값으로 해줘야 하는데, 우리가 찾으려는 값이 무엇인지 알아야 한다.

문제를 잘 읽어보면 우리는 결국 블루레이의 크기를 찾아야 되는데 여기에 이분 탐색이 사용된다.

#include <iostream>
#include <algorithm>
using namespace std;
using ll = long long;

int ar[100001], n, m, sum;

int main() {
	ios::sync_with_stdio(false); cin.tie(0);
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> ar[i];
		sum += ar[i];
	}
	ll L = *max_element(ar, ar + n), R = sum;
	ll ans = 1e9 + 1;
	while (L <= R) {
		ll mid = (L + R) / 2, sum = 0, cnt = 0;
		for (int i = 0; i < n;) {
			sum += ar[i];
			if (sum > mid) {
				sum = 0; cnt++;
			}
			else i++;
		}
		//printf("L= %lld mid= %lld R= %lld sum=%lld cnt=%lld\n", L, mid, R, sum, cnt);
		if (cnt < m) {
			ans = min(ans, mid);
			R = mid - 1;
		}
		else L = mid + 1;
	}
	cout << ans << endl;

	return 0;
}

이분 탐색을 가장 큰 값에서부터 총 합까지 돌려가면서 

		for (int i = 0; i < n;) {
			sum += ar[i];
			if (sum > mid) {
				sum = 0; cnt++;
			}
			else i++;
		}

이것처럼 넣어보고 sum값이 현재 블루레이 값보다 크다면 카운트를 하나 올려준다.

		for (int i = 0; i < n; i++) {
			sum += ar[i];
			if (sum > mid) {
				cnt++; sum = ar[i];
			}
		}
		if (sum <= mid) cnt++;

이런 식으로 구성해줘도 된다.

 

'알고리즘 > BOJ' 카테고리의 다른 글

BOJ 1992 쿼드트리  (0) 2020.09.18
BOJ 10830 행렬 제곱  (0) 2020.09.16
BOJ 2512 예산  (0) 2020.09.14
백준 11401 이항 계수 3  (0) 2020.09.13
백준 10816 숫자 카드 2  (0) 2020.09.11
'알고리즘/BOJ' 카테고리의 다른 글
  • BOJ 1992 쿼드트리
  • BOJ 10830 행렬 제곱
  • BOJ 2512 예산
  • 백준 11401 이항 계수 3
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    냅색
    구현
    dfs
    크루스칼
    BFS
    다익스트라
    분할 정복
    MST
    SWEA
    프로그래머스
    시뮬레이션
    이분 탐색
    이분탐색
    피보나치 수
    유니온 파인드
    완전 탐색
    우선순위 큐
    소수
    큐
    코딩테스트 연습
    조합
    알고리즘
    GREEDY
    dp
    BOJ
    완전탐색
    트리
    팰린드롬
    행렬 제곱
    피사노 주기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 2343 기타 레슨
상단으로

티스토리툴바