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 |
Tags
- 프로그래머스 #python #코딩테스트 #코테공부 #알고리즘 #dict
- 프로그래머스 #sql #mysql #코딩테스트
- 백준 #백준알고리즘 #알고리즘 #코딩테스트 #코딩테스트준비 #코테준비 #백준2110 #python #문제풀이
- 프로그래머스 #c++ #코딩테스트
- 카카오 #프로그래머스 #python #코딩테스트 #오픈채팅방
- 그리디알고리즘 #그리디 #백준 #우선순위큐 #최소힙 #최대힙 #알고리즘 #코딩테스트 #python
- 프로그래머스 #네트워크 #c++ #코딩테스트 #코테 #코테준비 #dfs
- 백준 #이거다시풀기
- 백준 #백준2217 #백준로프 #python
- 프로그래머스 #NULL 처리하기
- 동
- 프로그래머스 #python #2021카카오 #카카오코테 #카카오인턴쉽
- 카카오 코테
Archives
- Today
- Total
say repository
[프로그래머스] 소수 찾기 (level2) python 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
출처 : 프로그래머스
코드
from itertools import permutations
import math as m
def isPrime(n):
if n<2:
return False
for i in range(2,int(m.sqrt(n))+1):
if n%i == 0:
return False
return True
def solution(numbers):
answer = 0
numbs = [n for n in numbers]
permu = [] # 순열리스트
for i in range(1, len(numbs)+1):
permu += list(permutations(numbs,i))
permu1 = [int(''.join(p)) for p in permu]
permu1 = list(set(permu1))
for p in permu1:
if isPrime(p):
answer += 1
return answer
풀이
소수판별은 에라토스테네스의 체 알고리즘으로 풀이했다.
하지만 이 문제에서는 numbers에 있는 문자열로 이루어질 수 있는 모든 숫자 조합이 소수인지 아닌지를 판별하는 것이 문제이다.
이를 해결하기 위해, 순열의 방법을 사용했다.
python 에서의 순열은 permutations이다.
길이가 0인 순열은 관련이 없으니, 1부터 numbers의 길이만큼 순열리스트를 만들었다.
또한, 순열 리스트에 있는 문자열을 숫자로 바꿔줬고, 중복을 제거하기 위해 set()을 적용하고 다시 list()로 바꾸었다.
이제 이 순열 리스트에 있는 것이 소수 판별 함수를 통해 소수를 판별했다.
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 행렬 테두리 회전하기 python (*) (0) | 2022.05.27 |
---|---|
[프로그래머스] 피로도 python (0) | 2022.05.26 |
[프로그래머스] [3차] 압축 python (*) (0) | 2022.04.28 |
[프로그래머스] JadenCase 문자열 만들기 python (0) | 2022.04.28 |
[프로그래머스] 여행경로 python (*) (0) | 2022.04.28 |