https://www.acmicpc.net/problem/31713
로직
- A: 줄기의 수, B: 잎의 수
3*A <= B <= 4*A
의 경우 추가적인 줄기와 잎의 수가 필요 없음- 저 범위에 해당하지 않는 경우에 추가적인 재료가 필요
- 먼저 A가 많으면 모두 세잎클로버로 만듬(모든 줄기에 잎을 3개씩 붙이고, 남은 줄기*3만큼의 잎이 필요함)
- B가 많은 경우엔 네잎클로버 위주로 만들고, 줄기를 추가하여 세잎클로버 한두개를 섞는 방식으로 만들 수 있음
- 하지만 이 경우 예시2번 tc 3번인 1 5가 주어질 경우 문제 발생
- 줄기가 부족하여 A를 1 추가하여 2,5가 된 경우 다시 잎이 부족해짐
- 그렇기에 B가 많은 경우의 조건을 먼저 체크 하여 A를 추가한 뒤, A가 많은 경우로 다시 체크
import sys
input = sys.stdin.readline
def solution(A:int,B:int)->int:
cnt = 0
A4 = 4*A
if B > A4:
num = B-A4
cnt += (num // 4) + (1 if num%4 else 0)
A += cnt
A3 = 3*A
if B < A3:
cnt += A3-B
return cnt
T = int(input())
ans = [0]*T
for tc in range(T):
A,B = map(int,input().split())
ans[tc] = solution(A,B)
print(*ans,sep='\n')
'알고리즘 문제 풀이 > Python' 카테고리의 다른 글
python 백준 23801 두 단계 최단 경로 2 (0) | 2024.11.22 |
---|---|
python 백준 23793 두 단계 최단 경로 1 (0) | 2024.11.21 |
python 백준 20056 마법사 상어와 파이어볼 (0) | 2024.11.18 |
python 백준 5212 지구 온난화 (0) | 2024.11.01 |
python 백준 14620 (0) | 2024.10.31 |