[1. 문제 설명]
https://www.acmicpc.net/problem/1072
[2. 풀이 접근]
풀이 시 주의 할 사항
- 승률 계산 시, 부동 소수점 오차로 인해 틀리는 경우가 많다.
- long double 을 통해 부동 소수점 오차를 줄이도록 한다.
- 게임 횟수 계산 시, long long 까지 안가도 된다.
- X 를 1,000,000,000 으로 하고 Y 를 0 으로 설정 시, 1,000,000,000 내에서 승률을 올릴 수 있다.
- 이분 탐색 종료 후, lo 값을 그대로 출력해도 된다.
이분 탐색 종료 후, lo 값을 그대로 출력해도 되는 이유
- 역으로, 어떤 상한 값을 찾으라고 할 때, hi 를 그대로 출력해도 되는 이유와 같은 맥락이다.
- 특정 조건을 만족하지 않을 때(승률이 바뀌지 않을 때), lo 를 갱신한다.
- 특정 조건을 만족 할 때, hi 를 갱신한다.
- 이분 탐색 종료 직후 lo > hi 이며,
=> lo 업데이트로 인한 이분 탐색 종료 인 경우
=> hi 업데이트로 인한 이분 탐색 종료 인 경우,
좀 더 안전하게 푸는 방법
- 승률이 바뀌는 시점에 최소 값 갱신
[3. 코드]
'알고리즘 > Baekjoon' 카테고리의 다른 글
이분 탐색. [2343] (0) | 2023.01.29 |
---|---|
이분 탐색. [2467] (0) | 2023.01.28 |
탐욕법. [1946] (0) | 2023.01.19 |
탐욕법. [1789, 10162, 10610] (0) | 2023.01.17 |
탐욕법. [5585 / 2217] (0) | 2023.01.16 |