728x90
반응형
단순 사칙연산 문제이다. 처음엔 아래 코드같이 풀었는데 통과가 안됐다. 뭐가 틀린 건지 아직 모르겠다.
while 1:
A, B, C, D = map(int, input().split())
if A == B == C == D == 0:
break
s1 = max(A, B)/max(C, D)
s2 = min(A, B)/min(C, D)
s = max(s1, s2)
if s < 1:
res = 100
elif s > 100:
res = 1
else:
res = int(100//s)
print(f"{res}%")
결국 남의 코드를 참고해서 이분 탐색으로 해결했다.
while 1:
A, B, C, D = map(int, input().split())
if A == B == C == D == 0:
break
if A < B:
A, B = B, A
if C < D:
C, D = D, C
s, e = 1, 100
while s <= e:
mid = (s + e) // 2
a, b = A*mid/100, B*mid/100
ok = 0 if a > C or b > D else 1
if ok:
s = mid+1
ans = mid
else:
e = mid-1
print(f"{ans}%")
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 4655번 Hangover(python) (0) | 2021.02.13 |
---|---|
백준 알고리즘 4635번 Speed Limit(python) (0) | 2021.02.13 |
백준 알고리즘 4493번 가위 바위 보?(python) (0) | 2021.02.13 |
백준 알고리즘 4388번 받아올림(python) (0) | 2021.02.13 |
백준 알고리즘 4101번 크냐?(python) (0) | 2021.02.13 |