소수 만들기 - Python

2023. 12. 9. 01:58공부/📝 프로그래머스

1. 풀이 코드

import math

def solution(nums):
    answer = math.comb(len(nums), 3)
    for i in range(len(nums)):
        for j in range(i + 1, len(nums), 1):
            for k in range(j + 1, len(nums), 1):
                temp = nums[i] + nums[j] + nums[k]
                for l in range(2, (temp + 1) // 2, 1):
                    if temp % l == 0:
                        answer -= 1
                        break
    return answer

  처음부터 answer에 모든 경우의 수를 계산하여 넣었습니다. 그 후 소수가 아닌 경우에 대해서 answer에 -1을 더해주는 방식으로 문제를 풀었습니다.

 

2. 다른 사람 풀이 코드

def solution(nums):
    from itertools import combinations as cb
    answer = 0
    for a in cb(nums, 3):
        cand = sum(a)
        for j in range(2, cand):
            if cand%j==0:
                break
        else:
            answer += 1
    return answer

 

  itertools에 있는 combinations는 모든 조합의 결과를 리스트로 반환하더군요. 처음 보는 듯합니다. 그 외에도 for if else의 사용법이 신기하네요.

 

for 변수 in 순회가능한_객체:
    # 반복 동작
    if 조건:
        break
else:
    # 반복이 정상적으로 완료될 때 실행되는 코드

 

while 조건:
    # 반복 동작
    if 조건:
        break
else:
    # 반복이 정상적으로 완료될 때 실행되는 코드

  위의 두 가지 사용 예시와 같이 쓸 수 있는 for if else 구문은 유용하겠습니다.


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

'공부 > 📝 프로그래머스' 카테고리의 다른 글

[PCCE 기출문제] 1번 / 출력 - Python  (0) 2023.12.10
소수 찾기 - Python  (0) 2023.12.10
모의고사 - Python  (0) 2023.12.08
과일 장수 - Python  (0) 2023.12.07
폰켓몬 - Python  (0) 2023.12.06