# 전체 수 범위
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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] Professional 쥬스 나누기 - PYTHON #5601 (0) | 2021.01.26 |
---|---|
[SWEA 코딩] C. Write and Erase - PYTHON #2386 (0) | 2021.01.26 |
[SWEA 코딩] S/W 문제해결 기본 회문1 - PYTHON #1215 (0) | 2021.01.24 |
[SWEA 코딩] S/W 문제해결 기본 View - PYTHON #1206 (0) | 2021.01.23 |
[SWEA 코딩] 통역사 성경이 - PYTHON #7675 (0) | 2021.01.22 |