1049번 - 기타줄
소스에 따로 설명은 필요 없을거라고 생각합니다.
세트의 최소값과 낱개의 최소값을 비교합니다.
Case 1: 낱개로 사는게 세트로 사는 것보다 무조건 이득인 경우
- 낱개 * 6의 가격이 세트 가격보다 쌀 때는 무조건 낱개로만 삽니다.
Case 2: 세트로 사는게 낱개로 사는 것보다 무조건 이득인 경우
- 낱개 가격이 세트 가격보다 비쌀 때는 무조건 세트로만 삽니다.
- 이 때, (N // 6) * 세트 가격 + 세트 가격 if N % 6 else 0 으로, 나머지가 0이라면 세트를 살 필요가 없습니다.
Case 3: 세트로 6개를 사는 경우가 낱개 6개를 사는 경우보다 싸면서, 나머지에 대해서는 저울질을 해 봐야 할 때
- (N // 6) * 세트 가격 에, 나머지에 대해서는 min(세트 가격, (N % 6) * 낱개 가격) 으로 비교를 합니다.
모든 케이스에서 제대로 동작하는데 제출만 하면 틀렸다고 나옵니다. 무엇이 문제일까요??
아니면 입력 형식이 다른 테스트케이스가 존재하는지 알고 싶습니다.
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
return ((N // 6) * min6 + (min6 if N % 6 else 0))
이렇게 해주시면 됩니다.
코드를 검토해 주셔서 감사합니다 정말 감사합니다
댓글을 작성하려면 로그인해야 합니다.
supergrammer 3년 전
소스에 따로 설명은 필요 없을거라고 생각합니다.
세트의 최소값과 낱개의 최소값을 비교합니다.
Case 1: 낱개로 사는게 세트로 사는 것보다 무조건 이득인 경우
- 낱개 * 6의 가격이 세트 가격보다 쌀 때는 무조건 낱개로만 삽니다.
Case 2: 세트로 사는게 낱개로 사는 것보다 무조건 이득인 경우
- 낱개 가격이 세트 가격보다 비쌀 때는 무조건 세트로만 삽니다.
- 이 때, (N // 6) * 세트 가격 + 세트 가격 if N % 6 else 0 으로, 나머지가 0이라면 세트를 살 필요가 없습니다.
Case 3: 세트로 6개를 사는 경우가 낱개 6개를 사는 경우보다 싸면서, 나머지에 대해서는 저울질을 해 봐야 할 때
- (N // 6) * 세트 가격 에, 나머지에 대해서는 min(세트 가격, (N % 6) * 낱개 가격) 으로 비교를 합니다.
모든 케이스에서 제대로 동작하는데 제출만 하면 틀렸다고 나옵니다. 무엇이 문제일까요??
아니면 입력 형식이 다른 테스트케이스가 존재하는지 알고 싶습니다.