# 전체 수 범위
array = list(range(2,1000))

# array 앞에 0 2개 붙여줘서 범위 1000개로 맞춰주기(나중에 계산 귀찮아질까봐...)
for plus in range(2):
    array.insert(0,0)

# 소수
my_array = []
for q in range(1000):

    # 0이 아니고
    if array[q] != 0:

        for w in range(q,1000):

            # array[q]로 나눠서 나머지가 0이 되는 수(소수가 아닌 수)
            if q != w and array[w]%array[q] == 0:

                # array[w]는 나중에 계산 피하기 위해서 0으로 만들고
                array[w] = 0

        # array[q]는 my_array에 저장
        my_array.append(array[q])


T = int(input())

# 결과 저장 위치
res = []

for tc in range(1,1+T):

    # 정수
    n = int(input())

    # tc에서 필요한 소수 저장 위치
    temp_array = []

    # -4한 이유는 세 가지 소수 더했을 때
    # 2+2+@처럼 나오는 것이 가장 큰 숫자를 이용할 수 있는 경우이기 때문
    # ex) 2+3+(@-1) == 2+2+@
    for i in my_array:
        if i <= n-4:
            temp_array.append(i)

    # 세 수를 더해서 n이 되는 경우의 수
    cnt = 0

    idx = len(temp_array)

    for z in range(idx):
        for x in range(z,idx):
            for c in range(x,idx):
                if my_array[z]+my_array[x]+my_array[c] == n:
                    cnt += 1

    res.append(cnt)

# 1000개를 print해야 해서 따로 출력
for a in range(T):
    print('#{} {}'.format(a+1,res[a]))

 

그 외

문제 풀이를 위한 아이디어

 

1. tc가 1000개라서 print 따로 함

 

2. 2+2+3 == 2+3+2 == 3+2+2이기 때문에 중복된 경우를 제외할 수 있는 코드 필요

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다