Just Fighting
[프로그래머스] 소수 만들기 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/12977
< 문제 설명 >
주어진 배열에서 숫자 3개를 더했을 때 소수가 되는 경우의 개수를 리턴하라.
< 문제 이해 >
itertools의 combinations를 사용하면 될 것이라고 생각했고,
문제를 쉽게 해결할 수 있었다.
< 문제 풀이 >
combinations를 이용해 숫자 3개의 조합을 모두 구하고, 그 조합의 합을 구했다.
그리고 소수를 판별하는 함수를 만들어 소수이면 answer += 1이 되도록 하였다.
import itertools
def solution(nums):
answer = 0
li = list(itertools.combinations(nums,3))
li = [sum(combi) for combi in li]
for num in li:
answer += 1 if primeNum(num) else 0
return answer
def primeNum(num):
for i in range(2,num):
if num % i == 0:
return False
return True
< 풀이 개선 >
위에서 함수를 만들기 전에 원래는 아래 코드처럼 바로 소수임을 판별하는 코드를 넣고 싶었는데,
소수가 아닐 경우에 카운트 하는 방법을 어떻게 구현해야할지 몰라 함수를 만들어서 구현했다.
문제를 해결한 뒤에 다른 사람들의 풀이를 보고 for문 뒤에 else를 쓰면 for문이 끝난 뒤에 else문을 실행한다는 것을 알게 되었다(break문 등으로 빠져나가지 않는 경우에만).
import itertools
def solution(nums):
answer = 0
li = list(itertools.combinations(nums,3))
li = [sum(combi) for combi in li]
for num in li:
for i in range(2,num):
if num % i == 0:
break
else:
answer += 1
return answer
728x90
'Algorithm > 코딩테스트 연습' 카테고리의 다른 글
[프로그래머스] 예산 (0) | 2022.06.15 |
---|---|
[백준] 수 정렬하기 2 (0) | 2022.06.13 |
[백준] 수 정렬하기 3 (0) | 2022.06.06 |
[백준] 뒤집힌 덧셈 (0) | 2022.06.02 |
[백준] 운동 (0) | 2022.05.26 |
Comments