- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12977
정수론에서 소수판별법 숫자의 루트까지 숫자 중에 해당 수를 나누지 못하면 소수인 거는 알았는데, 이걸 코드로 어떻게 구현해야할지 몰랐다. 그래서 찾아보니 for문으로 숫자의 루트값 + 1 범위로 진행한 다음 그 중에 약수가 있으면 소수가 아니라는 걸로 구현하면 됐다
주어진 수에서 조합으로 3개의 숫자들을 선택한 다음 각 리스트의 합이 소수가 되는지 확인한다.
소수가 되는지 확인하는 법은 result 리스트에 약수들을 추가해가고, 소수라면 약수가 1과 자기 자신 외에는 없으므로
작성한 for문에서는 0개의 원소가 있을 것이다
이러한 원소들이 있을 때마다 세는 방식으로 진행했다
문제 풀면서 한 실수들이 있는데, 기억하기 위해 기록
1. combination은 itertools에서 가져오는 거
2. list(itertools.combination(리스트 이름, 선택하는 원소 갯수)) 형태로 작성하기
3. 루트는 math.sqrt()
- 정답 풀이 :
import itertools
import math
def solution(nums):
temp = list(itertools.combinations(nums, 3))
answer = 0
for i in range(len(temp)):
num = sum(temp[i])
result = []
for j in range(2, int(math.sqrt(num)) + 1):
if num % j == 0:
result.append(j)
#약수의 갯수가 자기 자신 말고는 없음
if len(result) == 0:
answer += 1
return answer
'코딩테스트 > 기출' 카테고리의 다른 글
[연습문제 / 프로그래머스] 12930번 : 이상한 문자열 만들기 (0) | 2022.08.29 |
---|---|
[연습문제 / 프로그래머스] 12915번 : 문자열 내 마음대로 정렬하기 (0) | 2022.08.28 |
[2020 카카오 인턴십/프로그래머스] 67256번 : 키패드 누르기 (0) | 2022.08.17 |
[스택,큐/프로그래머스] 12906번 : 같은 숫자는 싫어 (0) | 2022.08.17 |
[Greedy/프로그래머스] 72410번 : 신규 아이디 추천 (0) | 2022.08.16 |