본문 바로가기

알고리즘/Baekjoon

이분 탐색. [1072]

[1. 문제 설명]

https://www.acmicpc.net/problem/1072


[2. 풀이 접근]

풀이 시 주의 할 사항

  1. 승률 계산 시, 부동 소수점 오차로 인해 틀리는 경우가 많다.
  2. long double 을 통해 부동 소수점 오차를 줄이도록 한다.
  3. 게임 횟수 계산 시, long long 까지 안가도 된다.
  4. X 를 1,000,000,000 으로 하고 Y 를 0 으로 설정 시, 1,000,000,000 내에서 승률을 올릴 수 있다.
  5. 이분 탐색 종료 후, 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