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
- navigationBar 숨기기
- @observedobject 프로퍼티 래퍼
- 가로모드끄기
- react상태관리라이브러리
- GridItem
- 동기 함수 내에서 비동기 함수 호출
- 리액트최적화
- 반응형 css
- C++
- 페이지이동함수
- @environmentobject 프로퍼티 래퍼
- 비동기함수
- featured-sliced-design
- LazyVGrid
- react modal
- 리렌더링최적화
- 블로그업로드확인
- 컴퓨터네트워크
- 페이지전환
- @published 프로퍼티 래퍼
- zustand란
- react-router-dom
- 세로모드끄기
- zustand
- BFS
- modal 관리
- react hook
- CSS
- LazyHGrid
Archives
- Today
- Total
leebaek
[BOJ/1072번게임] c++ / binary_search 본문
문제
게임 승률 Z가 변하기 위해 몇번의 게임을 더 이겨야 하는지 구하는 문제
생각
이긴 횟수를 0~ MAX까지 이분탐색해야겠다 생각함
문제풀이
1.st = 0, en = MAX 로 범위 설정
2.st <= en 일 동안, mid = ( st + en ) / 2 : 이긴 횟수 설정
3.Z_이 Z 보다 작을 경우, st = mid + 1; 이긴 횟수가 더 많도록 함
4.Z_이 Z 보다 클 경우, en = mid - 1; 이긴 횟수가 더 적도록 함
4-1.만약, min_mid 보다 mid가 작을 경우 min_mid = mid를 넣고 ck = 1 저장
5.ck = 1이면 min_mid 출력
5-1.ck = 0이면 -1 출력
코드
#include <iostream>
#include <algorithm>
using namespace std;
#define MAX 1000000000
long long X, Y, Z, st, en, mid, Z_, min_mid;
int ck = 0;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> X >> Y;
Z = (int)((Y * 100) / X ); // 처음 승률
st = 0;
en = MAX;
min_mid = MAX;
while ( st <= en ) {
mid = ( st + en ) / 2;
Z_ = (int)((( Y + mid ) * 100) / ( X + mid ));
if ( Z_ <= Z )
st = mid + 1;
else {
en = mid - 1;
if ( mid <= min_mid ) {
min_mid = mid;
ck = 1;
}
}
}
if ( ck == 1 )
cout << min_mid;
else
cout << -1;
}
> 재채점
Z = (long double)Y / X * 100 으로 하면 틀림
Z = (int)((Y * 100) / X ) 로 고쳐줌
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/2343번기타레슨] c++ / binary_search (1) | 2023.11.08 |
---|---|
[BOJ/6236번용돈관리] c++ / binary_search (0) | 2023.11.07 |
[BOJ/2295번세수의합] c++ / binary search (0) | 2023.11.04 |
[BOJ/10816번숫자카드2] c++ / binary search (0) | 2023.11.04 |
[BOJ/5427번불!] c++ / BFS (1) | 2023.10.30 |