subeloper   2년 전

게시판에 있는 반례랑 문제 테케는 다 통과하는데 30%부분에서 틀렸습니다가 나옵니다.

어디가 틀린지 잘 못찾겠는데 혹시 반례나 제 코드에서 오류부분 한번 확인해주실 분 계실까요?

n, m = map(int, input().split()) # 끊어진 기타줄 개수, 기타줄 브랜드

g = []
result = 0
k = 1001
for _ in range(m):
    p, s = map(int, input().split()) # 패키지, 낱개
    g.append((p,s))

if m == 1: # 브랜드가 한 종류인 경우
    if n%6 == 0: # 끊어진 줄의 갯수가 6의 배수라면
        cnt = n//6
    else:
        cnt = n//6 + 1 # 6의 배수가 아니라면 1개 더 추가
    print(min(cnt*p, s*n)) # 패키지로 살 경우와 낱개로 살 경우 중 작은 값 출력
    exit()

if n <= 6: # 끊어진 줄의 갯수가 6개 이하라면
    temp = []
    for x,y in g:
        temp.append(min(x, y*n)) # 패키지 가격 vs 낱개 가격 각각 비교후
    print(min(temp)) # 최소 값 출력

else: # 브랜드 2개 이상, 끊어진 줄 7개 이상이라면
    g.sort() # 패키지 가격 기준으로 정렬
    temp = n//6 # n을 넘지 않는 패키지로 구매 가능한 수
    for i in range(len(g)):
        k = min(k, g[i][1]) # 최소 낱개 가격을 구한 후
    result += min(temp*g[0][0], k*temp) # 패키지 가격으로 살 경우와 낱개 가격으로 살 경우 중 최소 값 더하기
    if g[0][0] > k: # 만약 낱개 가격보다 최소 패키지 가격이 더 크다면
        result += k * (n%6) # 나머지 줄 수는 낱개로 구매하기
    else:
        result += g[0][0] # 아니라면 패키지로 1개 더 구입

    print(result)

댓글을 작성하려면 로그인해야 합니다.