[백준] 1072 - 게임
1. 문제
2. 개요
현재 X번 게임을 하여 Y번 승리하였다. 이후 게임에서 항상 승리한다고 할 때, 소수점 이하를 버린 승률 Z가 더 커지는 최소 승리 횟수를 구하는 문제.
3. 풀이 및 코드
3-1. 풀이
이분탐색을 이용해 최소횟수를 구한다.
3-2. Python
import sys
X, Y = map(int, sys.stdin.readline().split())
Z = Y * 100 // X
if Z >= 99:
print(-1)
else:
l, r = 1, X
answer = 0
while l <= r:
mid = (l + r) // 2
if (Y + mid) * 100 // (X + mid) > Z:
answer = mid
r = mid - 1
else:
l = mid + 1
print(answer)
3-3. C#
namespace boj_1072
{
internal class Program
{
static void Main(string[] args)
{
string[] input = Console.ReadLine().Split();
long X = long.Parse(input[0]), Y = long.Parse(input[1]);
long Z = Y * 100 / X;
if (Z >= 99)
Console.WriteLine(-1);
else
{
long l = 1, r = X;
long answer = 0;
while (l <= r)
{
long mid = (l + r) / 2;
if ((Y + mid) * 100 / (X + mid) > Z)
{
answer = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
Console.WriteLine(answer);
}
}
}
}
Comments