프로그래머스 - 소수만들기 / 문제 유형 : 수학 / 문제 분류 : Summer/Winter Coding(~2018) /Level 1
Summer/Winter Coding(~2018)에서 나왔던 소수 만들기 문제이다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제는 아래와 같다.
문제

Solution
문제를 해결한 방식은
우선, 주어진 숫자 중에서 3개의 모든 경우의 수를 골라야 하므로 조합(combination)을 이용했다.
combination 결과를 list로 저장하여, list의 요소를 하나씩 돌면서 해당 요소들의 합이 소수인지 판단하였다.
해당 요소의 합이 소수이면 answer의 값을 +1 한 후, answer를 return 해준다.
소수 판단 여부는 따로 isPrime()이란 함수로 만들어주었다.
소수는 1과 자기자신만 약수로 가지는 수 이므로 isPrime()에서는 2부터 해당 수 전까지 i로 나눠주었다. 나눈 나머지가 0이면 나누어떨어지므로 소수가 아니니 False를 return 한다. for문을 다 돌고 난 후에도 나누어떨어지지 않았으면 이는 소수 이므로 True를 return한다.
이때, for-else구문을 사용하였는데, 이는 for문을 돌면서 break되었는지 확인해주는 구문이다.
else부분은 for와 같은 들여쓰기를 한 후, 'break가 되지 않았다면'에 해당하는 부분을 작성해주면 된다.
꽤나 유용한 구문이니 알아두자😊
from itertools import combinations
def isPrime(num): #소수인지 판단
for i in range(2,num):
if num%i == 0:
return False
else: return True
def solution(nums):
answer = 0
comb = list(combinations(nums,3))
for c in comb:
if isPrime(sum(c)):
answer += 1
return answer
'코딩테스트 문제' 카테고리의 다른 글
[코드트리] 삼성 SW 역량테스트 2022 상반기 오전 2번 문제 - 예술성 (0) | 2023.04.06 |
---|---|
[Python] 프로그래머스 - 튜플(2019 카카오 개발자 겨울 인턴십) (0) | 2022.10.05 |
[Python] 프로그래머스 - 주차요금 계산 (0) | 2022.10.03 |
[Python] 프로그래머스 - 성격 유형 검사하기(2022 KAKAO TECH INTERNSHIP) (0) | 2022.09.17 |
[Python] 프로그래머스 - 신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) (2) | 2022.09.16 |