반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 배열
- 리액트
- react
- 파이썬
- Medium
- 카카오
- 자바스크립트
- javascript
- 코테연습
- Doitvue.js입문
- Level1
- dp
- 동적계획법
- 프로그래밍
- 프로그래머스
- 웹프로그래밍
- 백준
- OS
- C++
- 리트코드
- Level3
- CS
- python
- Level2
- VUE
- 고득점Kit
- sql
- LeetCode
- typescript
- web
Archives
- Today
- Total
[프로그래머스] 소수 찾기 - python 본문
반응형
소수 찾기
문제 설명
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
제한 사항
- numbers는 길이 1 이상 7 이하인 문자열입니다.
- numbers는 0~9까지 숫자만으로 이루어져 있습니다.
- "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
풀이
1부터 len(numbers)까지 가능한 순열을 구한 후 해당 값이 소수인지 체크하고 소수일 경우 set에 넣는다. (중복 제거를 위해)
from itertools import permutations
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num ** 0.5 + 1)):
if num % i == 0:
return False
return True
def solution(numbers):
primes = set()
for i in range(1, len(numbers) + 1):
for p in permutations(list(numbers), i):
if is_prime(int(''.join(p))):
primes.add(int(''.join(p)))
return len(primes)
다른 사람 풀이
집합을 이용해 아리토스테네스의 체를 구현해서 가능한 조합 중 최대 값까지의 모든 소수를 구한다.
from itertools import permutations
def solution(n):
a = set()
for i in range(1, len(n) + 1):
a |= set(map(int, map(''.join, permutations(list(n), i))))
a -= set(range(0, 2))
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(2 * i, max(a) + 1, i))
return len(a)
반응형
'코테 문제 풀이' 카테고리의 다른 글
[프로그래머스] 예상 대진표 - python (0) | 2022.04.07 |
---|---|
[프로그래머스] 조이스틱 - python (0) | 2022.04.07 |
[프로그래머스] 프린터 - python (0) | 2022.04.06 |
[프로그래머스] 전화번호 목록 - python (0) | 2022.04.06 |
[프로그래머스] 도둑질 - python (0) | 2022.04.06 |
Comments