본문 바로가기
Algorithm/완전탐색

[프로그래머스 lv 2] 소수 찾기

by HANNI하니 2023. 2. 7.

사용 언어 - Python3

문제 - 소수찾기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

순열조합 생성 후 소수 판별하는 완전 탐색 문제 (정답 맞춘 여부 X)

정답 풀이

1. numbers를 하나씩 자르기

nums = [n for n in numbers]

2. 순열조합 생성 list(permutations(nums,i))

3. 소수 판별 check True/False

4. set으로 중복 제거 후 개수 return

# 정답
from itertools import permutations

def solution(numbers):
    answer = []
    nums = [n for n in numbers]
    per = []

    for i in range(1,len(numbers)+1):
        per += list(permutations(nums,i))

    new_nums = [int(("").join(p)) for p in per]

    for n in new_nums:
        if n < 2:
            continue
        check = True
        for i in range(2,int(n**0.5)+1):
            if n%i == 0:
                check = False
                break
        if check:
            answer.append(n)

    return len(set(answer))

 

공부한 내용

 

1. permutations(list명, 원소개수) = 원소개수 만큼의 수열 만들기

permutations(nums,i) = 원소개수(i)를 변화시키면서 모든 가능한 수열 만들기

2. 소수 구하기

2보다 작은 0,1은 소수가 될 수 없다.

2부터 n의 제곱근까지 나눴을 때 나누어떨어진다면, 소수가 아니다. range(2,int(n**0.5)+1)

제곱근 값을 기준으로 왼쪽 값들에 약수가 존재하지 않는다면, 오른쪽에도 존재하지 않는다.

 


 

소수판별 알고리즘 - 파이썬 (Python)

알고리즘 문제를 풀다보면 특정 수들이 소수인지 판단하도록 요구하는 문제들이 줄곧 있다. 아예 대놓고 소수찾기라는 문제만 쳐봐도 꽤 많은 문제들이 나올 것이다. 소수는 영어로 Prime Number라

seongonion.tistory.com

  • 순열과 조합
 

[Python 알고리즘] python으로 순열과 조합 직접 구현하기

python으로 직접 구현하는 순열과 조합(Permutation, combination)

velog.io

  • 깃허브 정답
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글