백준/이분탐색

[백준 2343번 / C++] 기타 레슨

배발자 2022. 1. 17.
반응형
 

[백준 6236번 / C++] 용돈 관리

이분 탐색 문제이다. 어떤식으로 이분 탐색을 활용하는지 한번 살펴보자. 먼저 비교할 값을 이분탐색을 통해서 추출해낸다. 예를 들어 low 값과 high 값을 1과 100000값으로 정했으면 low와 high를 이

baebalja.tistory.com

 위의 문제와 거의 똑같은 문제다. 해당 링크 설명을 보고 한번 풀어보자.

#include <iostream>
#include <climits>
#include <vector>
using namespace std;
int l = 1; int h = INT_MAX; 
int n, m; 
vector <int> v; 
bool check(int mid) {
	for (int i = 0; i < n; i++) {
		if (v[i] > mid)return 0; 
	}
	int sum = 0; 
	int cnt = 1; 
	for (int i = 0; i < n; i++) {
		if (sum+v[i] <= mid) {
			sum+=v[i]; 
		}
		else {
			sum = 0; 
			cnt++; 
			sum += v[i]; 
		}
	}
	return cnt <= m; 
}

int main() {
	cin >> n >> m; 
	for (int i = 0; i < n; i++) {
		int a; cin >> a; 
		v.push_back(a); 
	}
	int result = 0; 
	while (l <= h) {
		int mid = (l + h) / 2; 		
		if (check(mid)) {
			h = mid - 1; 
			result = mid;
		}
		else {
			l = mid + 1; 
		}

	}
	cout << result; 

}
 

2343번: 기타 레슨

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

www.acmicpc.net

 

반응형

'백준 > 이분탐색' 카테고리의 다른 글

[백준 1072번 / C++] 게임  (0) 2022.01.26
[백준 2776번 / C++] 암기왕  (0) 2022.01.26
[백준 14627번 / C++] 파닭파닭  (0) 2022.01.25
[백준 1561번 / C++] 놀이 공원  (0) 2022.01.19
[백준 6236번 / C++] 용돈 관리  (0) 2022.01.17

댓글