Algorithm

[프로그래머스] Level1 | 소수 만들기 - 파이썬(Python) | combinations

토오오끼 2021. 11. 14. 18:28
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/12977

 

프로그래머스에서 토요일에 있었던 코테 준비를 위해 풀었던 소수 만들기 문제이다.

소수 만들고 판별하는 문제에 꽂혀서 왕창 푼 듯 ㅋㅋ


얼마전에 itertools permutations을 사용해서 주어진 수들의 조합을 구했던 기억이 있어서 그걸로 풀었으나

왜인지 모르겠지만 시간 초과로 효율성 테스트에서 통과하지 못했다.

다른 방법이 있나 찾아보니까 combination을 사용해서도 조합을 할 수 있었다.

 

정답 코드

from itertools import combinations as cb

def solution(nums):
    cnt = 0
    for a in cb(nums, 3) :
        Sum = sum(a)
        for j in range(2, Sum ) :
            if Sum%j == 0 :
                break
        else :
            cnt += 1
            
    return cnt

3개를 골라 더한 값이 소수일 때 cnt에 1을 더했다.

combinations을 사용하여 숫자 3개를 골라낼 수 있었다. 골라낸 걸 바로 sum을 이용해서 더한 후 소수인지 아닌지 판별을 했다. 

permutations을 사용했을 때 2중 for문이 아니라 훨씬 많은 for문을 사용해서 문제를 해결하려고 했었는데 그래서 시간 초과가 뜬 것 같다! combinations을 사용하는 방법도 같이 알아두면 좋을 것 같았다!

 


해당 문제 풀이 코드

 

GitHub - YOOHYOJEONG/algorithm_practice: 알고리즘 공부 및 코딩테스트 준비

알고리즘 공부 및 코딩테스트 준비. Contribute to YOOHYOJEONG/algorithm_practice development by creating an account on GitHub.

github.com

 

728x90
반응형