코딩테스트 소수 만들기 (프로그래머스)
코딩테스트 연습에 공개된 문제는 (주)그렙이 저작권을 가지고 있습니다.
(지문 하단에 별도 저작권 표시 문제 제외)
코딩테스트 연습 문제의 지문, 테스트케이스, 풀이 등과 같은 정보는 비상업적, 비영리적 용도로 게시할 수 있습니다.
코딩테스트 정보
- 프로그래머스
- python
- level 1
- 점수 : 캡쳐 못함
- 문제 링크
문제
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다.
숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
| nums | result |
|---|---|
| [1,2,3,4] | 1 |
| [1,2,7,6,4] | 4 |
풀이 코드
풀이 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def solution(nums):
from itertools import combinations
answer = 0
combs = [ sum(x) for x in list(combinations(nums, 3)) ]
for num in combs:
range_ = num // 2 if num % 2 == 0 else (num // 2) - 1
temp_list = []
for n in range(2, range_ + 1):
if num % n == 0:
temp_list.append(n)
break
if len(temp_list) == 0:
answer += 1
return answer
풀이 방식
■■■■ 접근 방식 ■■■■
(1) 주어진 숫자 중 3개 뽑기 : combinations를 이용
(2) 소수 검증 테스트 숫자 그룹 : 뽑은 3개의 숫자 합의 1/2까지의 자연수
(3) 소수 검증 : 뽑은 3개의 숫자를 테스트 그룹의 수로 나눴을 때 나눠떨어지는 수가 있다면 break
■■■■ 핵심 계산식 서술 ■■■■ (1번 풀이 기준)
(1) 3개의 숫자 뽑기
```python3개의 숫자 뽑기 : combination
from itertools import combinations combs = [ sum(x) for x in list(combinations(nums, 3)) ]
위 comprehension을 풀어 쓰면
combs = [] temp = combinations(nums, 3) temp = list(temp) for x in temp: combs.append(sum(x)) ```
댓글 남기기