https://school.programmers.co.kr/learn/courses/30/lessons/42839
모범 답안
from itertools import permutations
def solution(n):
a = set()
for i in range(len(n)):
a |= set(map(int, map("".join, permutations(n, i + 1))))
a -= set(range(0, 2))
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(i * 2, max(a) + 1, i))
print(set(range(i * 2, max(a) + 1, i)))
return len(a)
알게된 것
itertools의 permutations 함수를 사용하면 결과는 다음과 같이 튜플 형식으로 나온다.
permutations('011', 2)
('0', '1')
('0', '1')
('1', '0')
('1', '1')
.
.
이를 join 함수로 숫자로 묶고, 정수로 만들어 a에 담는다.
소수만을 남기기 위해 2의 배수, 3의 배수, ... (최댓값 ** 0.5 + 1)의 배수를 빼준다.
참조
'코딩테스트 > programmers (python)' 카테고리의 다른 글
Programmers / 3단계 / 단속카메라 / python / 탐욕법(Greedy) (0) | 2024.03.29 |
---|---|
Programmers / 3단계 / 등굣길 / python / 동적계획법(Dynamic Programming) (0) | 2024.03.28 |
Programmers / 3단계 / 야근 지수 / python (1) | 2024.03.27 |
Programmers / 2단계 / [1차]프렌즈4블록 / python / 2018 KAKAO BLIND RECRUITMENT (1) | 2024.03.26 |
Programmers / 2단계 / 2 x n 타일링 / python (0) | 2024.03.25 |