⌨️ Algorithms/프로그래머스
[Python] 프로그래머스 Lv2_소수 찾기
monzheld
2022. 8. 1. 23:05
https://school.programmers.co.kr/learn/courses/30/lessons/42839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
"""
입출력 예시)
numbers = "17" -> 3
numbers = "011" -> 2
"""
from itertools import permutations
# 소수인지 판별
def is_prime_n(x):
if x < 2:
return False
for i in range(2, x):
if x % i == 0:
return False
return True
def solution(numbers):
answer = 0
num = []
for i in range(1, len(numbers)+1):
num.append(list(set(map(''.join, permutations(numbers, i)))))
per_list = list(set(map(int, set(sum(num, []))))) # 순열 리스트
for p in per_list:
if is_prime_n(p) == True:
answer += 1
return answer
- 순열 permutations() 사용
from itertools import permutations
permutations(iterable, r) # r: 뽑을 원소의 개수
- ex) A, B, C 라는 세 개의 문자 중 두 개를 무작위로 뽑았을 때의 순열과 조합
- 순열: AB, AC, BA, BC, CA, CB
- itertools.permutations(['A', 'B', 'C'], 2)
- 조합: AB, AC, BC
- itertools.combinations(['A', 'B', 'C'], 2)
- 순열: AB, AC, BA, BC, CA, CB
- 순열
- itertools.permutations(iterable, r)
- 조합
- itertools.combinations(iterable, r)
https://itholic.github.io/python-combination-permutation/
[python] itertools를 이용해 순열과 조합 구하기
itertools를 이용해 순열과 조합 구하기
itholic.github.io
- num, per_list
# num, per_list 확인
def solution(numbers):
answer = 0
num = []
for i in range(1, len(numbers)+1):
num.append(list(set(map(''.join, permutations(numbers, i)))))
print('num:', num)
per_list = list(set(map(int, set(sum(num, [])))))
print('per_list:', per_list)
"""
numbers = "17"
-> num: [['1', '7'], ['17', '71']]
-> per_list: [17, 71, 1, 7]
numbers = "011"
-> num: [['0', '1'], ['01', '11', '10'], ['101', '011', '110']]
-> per_list: [0, 1, 101, 10, 11, 110]
"""
- sum(num, [])
- sum(덧셈할 것, 처음에 더할 것)
- 처음에 더할 것으로 빈 리스트 [ ]를 넣어주면
sum(num, []) => [] + [1,7] + [71, 17] - -> 리스트끼리의 덧셈으로 [1,7, 71, 17]이 됨