supergrammer   3년 전

소스에 따로 설명은 필요 없을거라고 생각합니다.

세트의 최소값과 낱개의 최소값을 비교합니다.

Case 1: 낱개로 사는게 세트로 사는 것보다 무조건 이득인 경우

- 낱개 * 6의 가격이 세트 가격보다 쌀 때는 무조건 낱개로만 삽니다.

Case 2: 세트로 사는게 낱개로 사는 것보다 무조건 이득인 경우

- 낱개 가격이 세트 가격보다 비쌀 때는 무조건 세트로만 삽니다.

- 이 때, (N // 6) * 세트 가격 + 세트 가격 if N % 6 else 0 으로, 나머지가 0이라면 세트를 살 필요가 없습니다.


Case 3: 세트로 6개를 사는 경우가 낱개 6개를 사는 경우보다 싸면서, 나머지에 대해서는 저울질을 해 봐야 할 때

- (N // 6) * 세트 가격 에, 나머지에 대해서는 min(세트 가격, (N % 6) * 낱개 가격) 으로 비교를 합니다.

모든 케이스에서 제대로 동작하는데 제출만 하면 틀렸다고 나옵니다. 무엇이 문제일까요??

아니면 입력 형식이 다른 테스트케이스가 존재하는지 알고 싶습니다.

esca9631   3년 전

elif min6 < min1:

return ((N // 6) * min6 + min6 if N % 6 else 0) 에서 

if else 부분이 전체에 적용되서 N이 6의 배수일 때 무조건 return 0을 해버립니다.

Ex) 12 1

       200 300

expected: 400

answer: 0

elif min6 < min1:

return ((N // 6) * min6 + (min6 if N % 6 else 0))

이렇게 해주시면 됩니다.

supergrammer   3년 전

코드를 검토해 주셔서 감사합니다 정말 감사합니다

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