https://www.acmicpc.net/problem/2251
2251번: 물통
각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부
www.acmicpc.net
import sys
from collections import deque
input=sys.stdin.readline
a,b,c=map(int, input().split())
# 경우의 수 담을 큐
q=deque()
q.append((0,0))
visit=[[0]*(b+1) for _ in range(a+1)]
visit[0][0]=1
answer=[]
def pour(x,y):
if visit[x][y]==0:
visit[x][y]=1
q.append((x,y))
def bfs():
while q:
x,y=q.popleft()
z=c-x-y
if x==0: # A물통이 비어있는 경우 C무롱에 남은 양 저장
answer.append(z)
# A->B
water=min(x,b-y)
pour(x-water, y+water)
# A->C
water=min(x,c-z)
pour(x-water, y)
# B->A
water=min(y,a-x)
pour(x+water, y-water)
# B->C
water=min(y,c-z)
pour(x, y-water)
# C->A
water=min(z,a-x)
pour(x+water, y)
# C->B
water=min(z,b-y)
pour(x, y+water)
bfs()
answer.sort()
print(*answer)
'알고리즘' 카테고리의 다른 글
[백준 알고리즘] 2839번 설탕 배달. 파이썬(python) (0) | 2022.10.19 |
---|---|
[백준 알고리즘] 14881번 물통 문제. 파이썬(python)/ 최대공약수 (0) | 2022.10.19 |
소수구하기. 에라토스테네스의 체 (0) | 2022.09.26 |
최단 경로 구하기. BFS? 다익스트라? (0) | 2022.08.26 |
a부터 b까지의 합 (0) | 2022.07.25 |