importmathdefcds(a,b):whileb!=0:k=a%ba=bb=kreturnasta=int(input())foraainrange(sta):inum=int(input())ingre=list(map(int,input().split()))# 비율puts=list(map(int,input().split()))# 쟤료forbbinrange(inum):# 최대공약수ifbb==inum-1:breakgcd=cds(ingre[bb],ingre[bb+1])ingres=[0forainrange(inum)]# 최대공약수로 나눈 비율current=0future=0count=[0forainrange(inum)]# 출력값forccinrange(inum):ingres[cc]=ingre[cc]/gcdforddinrange(inum):# 가장 비율이 높은 거 찾기current=puts[dd]/ingres[dd]ifcurrent>future:future=currentkok=math.ceil(future)# 올림forgginrange(inum):# 가장 높은 비율만큼 곱하기ingres[gg]*=kokcount[gg]=int(ingres[gg]-puts[gg])counts=0# 한병이상인지 확인forffinrange(inum):ifingres[ff]/ingre[ff]>=1:counts+=1ifcounts>=inum:foreeinrange(inum):print(count[ee],end=' ')print(' ')else:# 한병이상이 안됨kok=gcdforgginrange(inum):ingres[gg]*=kokcount[gg]=int(ingres[gg]-puts[gg])foreeinrange(inum):print(count[ee],end=' ')print(' ')
입력받은 비율의 최대공약수를 구하고, 비율을 최대공약수로 나누어 가장 간단한 비율로(더이상 나눠질 수 없는 상태) 만들고, 재료를 비율로 하나씩 나누어 가장 높은 수를 뽑고 그 수를 비율에 곱합니다. 그리고 비율-재료를 하여 출력을 하는 코드입니다.
코드를 실행하고 문제에서 나오는 예제입력 대로 하면 예제 출력대로 나오고, 댓글에 있는 100 100 100 100 도 99 99 99 99로 출력이 되는데 오답이라고 계속 떠서 짜증이 나네
혹시 뭐가 오답을 계속 내게 하는지 아시는분은 댓글 달아주시기 바랍니다.
5년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
doctidea
일단 소스코드입니다.
입력받은 비율의 최대공약수를 구하고, 비율을 최대공약수로 나누어 가장 간단한 비율로(더이상 나눠질 수 없는 상태) 만들고, 재료를 비율로 하나씩 나누어 가장 높은 수를 뽑고 그 수를 비율에 곱합니다. 그리고 비율-재료를 하여 출력을 하는 코드입니다.
코드를 실행하고 문제에서 나오는 예제입력 대로 하면 예제 출력대로 나오고, 댓글에 있는 100 100 100 100 도 99 99 99 99로 출력이 되는데 오답이라고 계속 떠서 짜증이 나네
혹시 뭐가 오답을 계속 내게 하는지 아시는분은 댓글 달아주시기 바랍니다.
5년 전