Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react fsd
- BFS
- git
- react hook
- @observedobject 프로퍼티 래퍼
- @environmentobject 프로퍼티 래퍼
- 원격저장소 연결
- zustand란
- react-router-dom
- react상태관리라이브러리
- 가로모드끄기
- featured-sliced-design
- zustand
- gitbub desktop
- 리렌더링최적화
- CSS
- 반응형 css
- 동기 함수 내에서 비동기 함수 호출
- 비동기함수
- 리액트최적화
- GridItem
- 컴퓨터네트워크
- 페이지전환
- modal 관리
- @published 프로퍼티 래퍼
- 블로그업로드확인
- 페이지이동함수
- C++
- react modal
- 세로모드끄기
Archives
- Today
- Total
leebaek
[BOJ/6236번용돈관리] c++ / binary_search 본문
문제
N일 동안 K원을 M번만 인출할 때, 나올 수 있는 K값 중 가장 작은 수를 구하는 문제
생각
문제 이해를 잘 못하겠어서 구글링해서 이해했음
하루에 쓸 돈이 mid 값을 넘어가면 안됨
문제풀이
1.현우가 가진 돈을 합산함
2.st = 1, en = 1번 과정에서 나온 수
3.st <= en 일 동안, mid = ( st + en ) / 2
3.money[i]가 mid 보다 크다면, ck = 1 break
4.money[i]가 total 보다 크다면, total = mid, cnt++ | 한번 인출함
5.total -= money[i] 쓴 금액 차감해줌
6.만약 ck = 1 이거나, cnt < M 일 경우, st = mid + 1; 더 큰 금액을 탐색
6-1.그렇징 않을 경우, result = mid; en = mid - 1; 더 적은 금액을 탐색
7.result 값 출력
코드
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int N, M, K, cnt=0, st=1, en = 0, total=0, ck=0, result=0;
int money[1000001];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for ( int i = 0; i < N; i++ ) {
cin >> money[i];
en += money[i];
}
while( st <= en ) {
int mid = ( st + en ) / 2;
total = mid;
cnt = 1;
ck = 0;
for ( int i = 0; i < N; i++ ) {
if ( money[i] > mid ) {
ck = 1;
break;
}
if ( money[i] > total ) {
total = mid;
cnt++;
}
total -= money[i];
}
if ( ck || cnt > M )
st = mid + 1;
else {
result = mid;
en = mid - 1;
}
}
cout << result;
}
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/2792번보석상자] c++ / binary_search (0) | 2023.11.10 |
---|---|
[BOJ/2343번기타레슨] c++ / binary_search (1) | 2023.11.08 |
[BOJ/1072번게임] c++ / binary_search (0) | 2023.11.06 |
[BOJ/2295번세수의합] c++ / binary search (0) | 2023.11.04 |
[BOJ/10816번숫자카드2] c++ / binary search (0) | 2023.11.04 |