자바 백준 1072번
실버 3
https://www.acmicpc.net/problem/1072
문제 보기

분류: 수학, 이분 탐색
코드 풀이
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 게임 횟수와 이긴 게임 수를 입력 long X = sc.nextLong(); long Y = sc.nextLong(); // 추가 게임 횟수를 계산하는 메서드 호출 long additionalGames = findAdditionalGames(X, Y); // 결과 출력 System.out.println(additionalGames); } // 형택이가 추가로 플레이해야 할 게임 횟수를 이분 탐색으로 계산하는 메서드 private static long findAdditionalGames(long X, long Y) { // 이분 탐색을 위한 범위 설정 long left = 0; long right = 1000000001; // 이분 탐색 진행 while (left < right) { long mid = (left + right) / 2; long win = Y + mid; // 이긴 게임 수에 추가 게임 횟수 더함 long total = X + mid; // 전체 게임 수에 추가 게임 횟수 더함 long winRate = win * 100 / total; // 현재 승률 계산 // 승률이 변하지 않는 경우, 추가 게임 횟수를 늘려야 함 if (winRate <= Y * 100 / X) { left = mid + 1; } else { // 승률이 변하는 경우, 추가 게임 횟수를 줄여야 함 right = mid; } } if (left == 1000000001) { // 만약 승률이 절대 변하지 않는 경우 return -1; } else { // 그렇지 않은 경우 추가 게임 횟수 반환 return left; } } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 2644 - 촌수계산 (0) | 2024.05.19 |
---|---|
[Java] 백준 풀기 18110 - solved.ac (0) | 2024.05.12 |
[Java] 백준 풀기 9733 - 꿀벌 (2) | 2024.05.01 |
[Java] 백준 풀기 10156 - 과자 (0) | 2024.04.30 |
[Java] 백준 풀기 1940 - 주몽 (0) | 2024.04.29 |