코딩 테스트/프로그래머스

Lv2. 소수 찾기

  • -
728x90
반응형

문제 보기 :  소수 찾기

 

프로그래머스

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

programmers.co.kr


문제

  • 정답률 : 54%


작성 코드

from itertools import permutations, combinations

def is_prime(n):
    if n == 1:
        return False
    i = 2
    while i<n:
        if n%i==0:
            return False
        i+=1
    return True
    
def solution(numbers):
    
    numbers = list(numbers)
    combi = [] ; combi2 = []
    
    for l in range(1, len(numbers)+1):
        combi += combinations(numbers,l)
        
    for l in combi:
        c = permutations(l)
        for k in c:
            a = ''.join(k)
            if a not in combi2:
                combi2.append(a)
    combi2 = list(set((map(int,combi2))))
    
    answer = 0
    for i in combi2:
        if i < 2:
            pass
        elif is_prime(i):
            answer+=1
    return answer

풀이

from itertools import permutations #일반 순열
from itertools import product #중복순열 [1,1,2]
from itertools import combinations #일반 조합
from itertools import combinations_with_replacement #중복 조합

먼저 소수 판별 함수 is_prime()을 먼저 정의하고, solution()을 짰다.

combinations로 조합가능한 리스트를 모두 만든 뒤, 이 리스트들로 만들 수 있는 값들을 permutation(일반순열)으로 정렬한다.
그리고 정렬한 값을 join으로 1 value로 만든 다음, combi2에 더한다.

combi2에 있는 값들을 map을 사용해서 모두 int로 변경한 뒤, is_prime()에 입력하며 소수를 판별해 answer을 구한다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. 피로도  (0) 2024.10.04
Lv2. 두 큐 합 같게 만들기  (0) 2024.10.01
Lv2. 큰 수 만들기  (0) 2024.09.30
Lv1. 햄버거 만들기  (0) 2024.09.30
Lv2. 2개 이하로 다른 비트  (0) 2024.09.28
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.