[PYTHON]
[프로그래머스]LV1. 소수 만들기
b___gly
2022. 4. 23. 18:40
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
내가 생각한 접근법
- combinations 때려서
- if문 돌려서 % i 가 0이면 answer에 담고
- 그 수를 len으로 세기
풀이
def check_sum(num) :
for i in range(2, num):
# num을 2~num 전까지 나누는데 나머지가 0이면 소수가 아니라는 뜻. 그래서 False 반환.
if num % i == 0 :
return False
# 나눴는데 다 0이 아니다라는 건 소수라는 뜻(1과 자기자신밖에 딱 안 나눠떨어짐). 그래서 True 반환.
return True
def solutions(nums) :
answer = []
# 3개씩 뽑을 수 있는 모든 경우의 수 다 구해서 a에 저장.
a = list(combinations(nums,3))
#a 돌면서 모든 조합의 sum을 구해봄. 거기서 함수check_sum 돌려서 True가 나오면 answer에 1씩 추가.
for i in a :
sum = i[0] + i[1] + i[2]
if check_sum(sum) :
answer += 1
return answer
combinations
- 하나의 리스트에서 모든 조합을 계산을 해야 한다면, permutations(순열), combinations(조합)을 사용
- 순열은 순서 상관 O, 조합은 순서 상관 X. ex) (A,B)와 (B,A)는 순열에서 다른 것. 조합에서 같은 것.
- 두개 이상의 리스트에서 모든 조합을 계산해야 한다면, product를 사용