728x90
📌 소수 만들기
💡 나의 풀이
풀이 방법은 다음과 같다.
nums
에 있는 숫자들 중 서로 다른 3개를 고른다:combination(3, nums)
- 각각의
combination
을 모두 더한 후 소수 판별 과정을 거친다. - 소수가 맞으면
cnt +=1
- 반복문이 끝나면
return cnt
처음에 break
를 사용해야 할지, continue
를 사용해야할지 헷갈렸다.
결론적으로 sum(i)
를 j로 나눌 때 한 번이라도 0으로 나누어 떨어지는 값이 나오면 해당 반복문을 더 이상 실행하지 않아야 다음 sum(i)
로 넘어가기 때문에 break
를 사용했다.
continue
를 사용하면 다음 sum(i)
값을 불러오는 것이 아닌, 다음 j값을 불러오게 된다.
여기서 중요한 문법은 for - else
문법인데, j
가 반복문 끝까지 돌았는데 break
에 걸리는 것이 없다면, cnt+=1
을 하게 작성했다.
같은 반복문 안에서만 사용 가능한 것이 아니라, 밖에서도 사용 가능한 점 숙지하자.
from itertools import combinations
def solution(nums):
result = [sum(i) for i in combinations(nums, 3)]
cnt = 0
for i in result:
for j in range(2, i//2+1):
if i % j == 0:
break
else:
cnt+=1
return cnt
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 파이썬(python) ] 프로그래머스 level2 - 기능 개발 (0) | 2021.07.02 |
---|---|
[ 파이썬(python) ] 프로그래머스 level1 - 키패드 누르기 (0) | 2021.06.21 |
[ 파이썬(python) ] 프로그래머스 level1 - 실패율 (0) | 2021.04.12 |
[ 파이썬(python) ] 프로그래머스 level1 - 비밀지도 (0) | 2021.04.07 |
[ 자바스크립트(JS), 파이썬(python) ] 프로그래머스 level1 - x만큼 간격이 있는 n개의 숫자 (0) | 2021.04.05 |
댓글