candy = int(input())
count = 0
for 영훈 in range(1, candy + 1):
for 남규 in range(1, candy + 1):
for 택희 in range(1, candy + 1):
if candy == 영훈 + 남규 + 택희 :
if 남규 >= 영훈 + 2 :
if 택희 % 2 == 0 :
count += 1
print(count)
3중 루프의 코드 + if문의 반복이 코드를 복잡하게 만들고 시간이 오래걸리기 때문에, for문에 조건을 추가하고 루프를 최대한 줄여보는 방향으로 생각해봄.
처음에는 남규 = 영훈 + 2 로 착각해서 단일 루프가 가능하겠다 생각했는데 문제를 다시 읽어보니, 남규 >= 영훈 + 2 였다..!
그래서 영훈이와 남규가 받을 사탕의 개수를 for문을 사용하고, 택희가 받을 사탕의 개수는 전체 - (영훈 + 남규)를 사용해 코드를 다시 짜보았다.
candy = int(input())
count = 0
# 영훈, 남규, 택희 모두 1개 이상의 사탕을 받아야 하므로,
# 영훈이가 받을 사탕의 개수를 candy - 2개로 제약
for 영훈 in range(1, candy - 1):
for 남규 in range(영훈 + 2, candy - 1 - 영훈):
택희 = candy - (영훈 + 남규)
if 택희 > 0 and 택희 % 2 == 0 :
count += 1
print(count)
메모리 크기는 같지만 시간은 156ms -> 44ms 로 감소하긴 했다..!