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을 사용하는 방법도 같이 알아두면 좋을 것 같았다!
728x90