문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예 설명
입출력 예 #1[1,2,4]를 이용해서 7을 만들 수 있습니다.
입출력 예 #2[1,2,4]를 이용해서 7을 만들 수 있습니다.[1,4,6]을 이용해서 11을 만들 수 있습니다.[2,4,7]을 이용해서 13을 만들 수 있습니다.[4,6,7]을 이용해서 17을 만들 수 있습니다.
해설
해설 : itertools 모듈 중 combinations 함수는 permutations 함수와 다르게 중복 값을 주지 않는다.
이 함수를 사용해서 3개 숫자의 집합을 구하고
for문을 돌린다.
각 요소를 더해서 요소가 2보다 작으면 소수를 찾을 필요가 없으니 False를 리턴하게 해서 if false로 cnt가 더해지지 않게 한다.
만약 2보다 크면 소수를 찾아야하므로 for문을 돌리는데, nums//2+1대신 사용하는 것은 숫자가 소수인지 확인하는 데 필요한 반복 횟수를 줄이는 간단한 최적화이므로 num//2 + 1 로 제곱근까지만 확인한다.
통과한다면 True로 카운팅을 하고
총 개수를 리턴한다.
'코테공부' 카테고리의 다른 글
프로그래머스 36일차 - 최대공약수와 최소공배수 (0) | 2023.03.24 |
---|---|
프로그래머스 35일차 - 이름이 없는 동물의 아이디 (0) | 2023.03.23 |
프로그래머스 35일차 - 핸드폰 번호 가리기 (0) | 2023.03.23 |
프로그래머스 35일차 - 콜라 문제 (0) | 2023.03.23 |
프로그래머스 34일차 - 과일로 만든 아이스크림 고르기 (0) | 2023.03.22 |