1. 접근 방식
1차
2차
2. 기본 코드에 대한 설명
from itertools import permutations
# 소수 판별 함수
def prime_num(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
def solution(numbers):
answer = 0
listchar = []
result1 = []
# 순열이 담긴 리스트 만들기
for i in range(1, len(numbers)+1):
tmp = list(permutations(numbers,i))
# [["0"],["1"],["1"]],[["0","1"],["0","1"],["1","1"]],[["0","1","1"]]
listchar += [int(''.join(i)) for i in tmp] # 원소 하나로 합치기
result1 = list(set(listchar)) # set 활용해서 중복제거 [0,1,11]
# 리스트 카운트 (체)
for i in result1:
if prime_num(i):
answer += 1
else:
continue
return answer
Python
복사
3. 추가적으로 개선한 코드에 대한 설명
-
4. 사용 라이브러리 정리
•
itertools
•
에라토스테네스의 체
알고리즘 설명
1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열
2. 2부터 시작해서 나열된 수에서 지워지지 않은 수 중 가장 작은 2를 소수로 선택하고 2의 배수를 지운다.
3. 지워지지 않은 3을 소수로 선택하고 3의 배수를 지운다.
4. 4는 지워졌다 > 넘어감
5. 5를 소수로 선택하고 5의 배수를 지운다.
6. 2-4를 반복한다.
7. 반복이 끝나면 지워지지 않은 수들을 소수로 출력한다.
5. 기타(문제 풀이에 어려웠던 점, 구현하고자 했는데 실패한 방식)
ex) 이 방식으로 접근했는데 구현이 힘들어서 개선했습니다. 그 방식으로 접근했는데 접근방식이 잘못되었다는 것을 깨닫고 다시 풀었습니다.