첫번째 코드
이번에는 문제 잘 읽고 이상하게 접근하지 말자 ㅋㅋㅋ
0이 있는 경우 조건에 맞지 않으므로 -1을 내보낸다.
또한 A, B, C 상자를 역순으로 C, B, A 순으로 바라보면서
만약 최소한의 사탕을 먹는 방법으로 접근한다.
test_case = int(input())
for t in range(test_case):
box_list = list(map(int, input().split()))
eat = 0
for i in range(2, 0, -1):
if 0 in box_list:
eat = -1
break
if box_list[i-1] >= box_list[i]:
limit = box_list[i] - 1
eat += (box_list[i-1] - limit)
box_list[i-1] = limit
print(f'#{t+1} {eat}')
오류..?
두번째 코드
반례를 찾았다! 1 1 3의 경우 -1을 내보내야 하는데 위 코드의 경우 1을 내보낸다.
이는 0나 마지막 결과에 나왔을 경우 -1을 내보내지 않고 끝내기 때문이다.
그렇기 때문에 내부에 0이 있는지를 마지막에 확인하면 된다! >> 순서변경!
test_case = int(input())
for t in range(test_case):
box_list = list(map(int, input().split()))
eat = 0
for i in range(2, 0, -1):
if box_list[i-1] >= box_list[i]:
limit = box_list[i] - 1
eat += (box_list[i-1] - limit)
box_list[i-1] = limit
if 0 in box_list:
eat = -1
break
print(f'#{t+1} {eat}')
통과!
링크