반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
from itertools import permutations
def solution(numbers):
answer = 0
arr =[]
s= set()
cnt =0
chk = True
for i in range(1, len(numbers)+1):
tmp = list(map(''.join, permutations(numbers, i)))
for j in tmp:
s.add(int(j))
for i in s: #에라토스테네스의 체
i = int(i)
chk = True
if i >= 2:
for j in range(2, int(i**0.5)+1):
if i%j ==0:
chk = False
if chk:
cnt+=1
return cnt
모든 개수의 순열을 다 알아내는 법(특정한 개수를 모를 때)
for per in permutations(arr, k):
s.add(per)
여기서 많이 헤맸다. 최근에 풀었던 것처럼 이렇게 풀었지만, 이번 문제는 개수를 모르기 때문에 이렇게 풀면 오류가 난다.
for i in range(1, len(numbers)+1):
for per in permutations(numbers, i):
s.add(per)
근데 이렇게 해도 오류가 난다. 오류가 나는 이유는 011, 11 이렇게 11이 두 번 등장했을 때, set에서 11을 거르지 못하고 둘 다 집어삼켜버린다. (물론 내가 int 처리를 안해줘서 집어삼켜버린 것도 있다.)
원소의 개수가 달라질 때마다 set에 저장하기
for i in range(1, len(numbers)+1):
tmp = list(map(''.join, permutations(numbers, i)))
for j in tmp:
s.add(int(j))
반응형
'코딩테스트 대비 > 프로그래머스' 카테고리의 다른 글
| [Python][프로그래머스] lv3. 여행경로 (0) | 2023.07.09 |
|---|---|
| [Python][프로그래머스] lv3. 단어 변환 (0) | 2023.07.07 |
| [Python][프로그래머스] lv2. 타겟 넘버 (0) | 2023.07.07 |
| [Python][프로그래머스] lv1. 같은 숫자는 싫어 (0) | 2023.07.07 |
| [Python][프로그래머스] lv2. 전화번호 목록 (0) | 2023.07.06 |