potion 문제를 파이썬으로 푸는데 오답이 계속...

  • doctidea
    doctidea

    일단 소스코드입니다.

    import math
    
    
    def cds(a, b):
        while b != 0:
            k = a % b
            a = b
            b = k
        return a
    
    
    sta = int(input())
    for aa in range(sta):
        inum = int(input())
        ingre = list(map(int, input().split()))  # 비율
        puts = list(map(int, input().split()))  # 쟤료
        for bb in range(inum):  # 최대공약수
            if bb == inum - 1:
                break
            gcd = cds(ingre[bb], ingre[bb+1])
        ingres = [0 for a in range(inum)]  # 최대공약수로 나눈 비율
        current = 0
        future = 0
        count = [0 for a in range(inum)]  # 출력값
        for cc in range(inum):
            ingres[cc] = ingre[cc] / gcd
        for dd in range(inum):  # 가장 비율이 높은 거 찾기
            current = puts[dd] / ingres[dd]
            if current > future:
                future = current
        kok = math.ceil(future)  # 올림
        for gg in range(inum):  # 가장 높은 비율만큼 곱하기
            ingres[gg] *= kok
            count[gg] = int(ingres[gg] - puts[gg])
        counts = 0  # 한병이상인지 확인
        for ff in range(inum):
            if ingres[ff] / ingre[ff] >= 1:
                counts += 1
        if counts >= inum:
            for ee in range(inum):
                print(count[ee], end=' ')
            print(' ')
        else:  # 한병이상이 안됨
            kok = gcd
            for gg in range(inum): 
                ingres[gg] *= kok
                count[gg] = int(ingres[gg] - puts[gg])
            for ee in range(inum):
                print(count[ee], end=' ')
            print(' ')
    

    입력받은 비율의 최대공약수를 구하고, 비율을 최대공약수로 나누어 가장 간단한 비율로(더이상 나눠질 수 없는 상태) 만들고, 재료를 비율로 하나씩 나누어 가장 높은 수를 뽑고 그 수를 비율에 곱합니다. 그리고 비율-재료를 하여 출력을 하는 코드입니다.

    코드를 실행하고 문제에서 나오는 예제입력 대로 하면 예제 출력대로 나오고, 댓글에 있는 100 100 100 100 도 99 99 99 99로 출력이 되는데 오답이라고 계속 떠서 짜증이 나네

    혹시 뭐가 오답을 계속 내게 하는지 아시는분은 댓글 달아주시기 바랍니다.


    5년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.