💡문제 설명
주어진 숫자 중 3개의 수를 더했을 때, 소수(prime number)가 되는 경우의 개수를 구하기.
숫자들이 들어있는 배열 nums 가 매개변수로 주어질 때, nums 에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성하기
💡제한사항
1. nums 에 들어있는 숫자의 개수는 3개 이상 50개 이하
2. nums 의 각 원소는 1 이상 1,000 이하의 자연수, 중복된 숫자가 들어있지 않다.
💡입출력 예시

💡풀이
1. 3중 for 문 : 서로 다른 3개의 값들을 더해주기 위함.
ㄴ for 루프는 주어진 범위에서 요소가 없으면 자동으로 실행되지 않고 지나간다.
ㄴ 만약, for i in range(4, 3) : print(i) 이 구문은 에러가 발생할 것 같지만, 발생하지 않고 다음으로 넘어간다.
ㄴ 따라서, nums 의 길이가 4일 때, 밑의 코드에서 k는 j가 3인 경우 for k in range(4, 4) : ... 는 실행되지 않고 다시 for i 문으로 올라가게 된다.
2. if len([i for i in range(1, sum_3 + 1) if sum_3 % i == 0]) == 2 :
prime.append(sum_3)
ㄴ 소수의 특성 (1과 자기자신만을 약수로 가짐) 을 활용해 nums 에 주어진 값 중 3개를 더해서 소수인 경우 prime 리스트에 추가
3. return len(prime) : prime 리스트에 쌓인 (소수) 값들의 개수를 return 한다.
# for 루프는 주어진 범위에서 요소가 없으면 자동으로 실행되지 않고 지나간다.
# 따라서 for 구문 안에 있는 덧셈은 k 가 범위안에 있을 때만 실행
# pass 명령어를 명시적으로 사용하지 않아도, 루프 범위가 유효하지 않으면 아무작업도 하지 않고 다음 코드로 넘어간다.
# TIL (0718)
def solution(nums):
prime = []
for i in range(len(nums)) :
for j in range(i+1, len(nums)) :
for k in range(j+1, len(nums)) :
sum_3 = nums[i] + nums[j] + nums[k]
if len([i for i in range(1, sum_3 + 1) if sum_3 % i == 0]) == 2 :
prime.append(sum_3)
return len(prime)
'Programming > Python' 카테고리의 다른 글
[프로그래머스 Python] 숫자 짝꿍 (0) | 2024.08.02 |
---|---|
[프로그래머스 Python] 기사단원의 무기 (1) | 2024.07.24 |
[프로그래머스 Python] 카드 뭉치 (0) | 2024.07.17 |
[프로그래머스 Python] 명예의 전당 (1) (0) | 2024.07.16 |
[프로그래머스 Python] 푸드 파이트 대회 (4) | 2024.07.15 |