# 전체 수 범위 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 |