본문 바로가기
Algorithm/프로그래머스(Programmers)

[ 파이썬(python) ] 프로그래머스 level1 - 소수만들기

by YWTechIT 2021. 4. 12.
728x90

📌 소수 만들기

문제 설명


💡 나의 풀이

풀이 방법은 다음과 같다.

  1. nums에 있는 숫자들 중 서로 다른 3개를 고른다: combination(3, nums)
  2. 각각의 combination을 모두 더한 후 소수 판별 과정을 거친다.
  3. 소수가 맞으면 cnt +=1
  4. 반복문이 끝나면 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
반응형

댓글