728x90
프로그래머스의 소수만들기 문제 풀이입니다. 문제는 링크를 통해 상세하게 확인하세요!
문제를 풀기 위해서는 범위 내의 소수를 가지고 있는 리스트가 필요합니다.
소수를 담은 리스트 만드는 법은 아래 링크를 통해 확인하세요!
아래 코드에서는 sosu_list()를 통해 예제에서 만들 수 있는 가장 큰 숫자인 (1000+999+998)까지의
소수를 모두 가진 리스트를 얻어냅니다.
이제 문제풀이입니다! 코드를 먼저 보겠습니다
sosu = sosu_list(1000+999+998)
nums = [1,2,7,6,4]
nums.sort()
nums_len = len(nums)
count_can_sosu = 0
for a in range(0, nums_len) :
for b in range(a+1, nums_len) :
for c in range(b+1, nums_len):
summ = nums[a]+nums[b]+nums[c]
if sosu.count(summ) == 1 :
# summ 이 소수 리스트인 nums에 몇개 있는지 반환. 0이면 소수가 아님
count_can_sosu += 1
print('경우의 수 : ',count_can_sosu)
코드가 진행되는 상황을 확인하고 싶은 분들은 아래의 더보기를 클릭하여 나오는 코드를 실행시키면 됩니다.
더보기
sosu = sosu_list(1000+999+998)
nums = [1,2,7,6,4]
nums.sort()
nums_len = len(nums)
count_can_sosu = 0
for a in range(0, nums_len) :
print("a는 ",nums[a])
for b in range(a+1, nums_len) :
print("b는 ",nums[b])
for c in range(b+1, nums_len):
print("c는 ",nums[c])
summ = nums[a]+nums[b]+nums[c]
print("합계는 ",summ)
if sosu.count(summ) == 1 :
# summ 이 소수 리스트인 nums에 몇개 있는지 반환. 0이면 소수가 아님
count_can_sosu += 1
print("경우의수 추가가 되나? : ", count_can_sosu)
print("==========")
print('경우의 수 : ',count_can_sosu)
print(nums.count(sosu))
코드의 for 문은 아래 내용을 의미합니다.
nums가 [0, 1, 2, 3, 4] 라고 가정하면 아래 순서로 코드가 진행됩니다.
programmers에 제출하기 위해 def로 정리하면 다음과 같겠네요.
sosu = sosu_list(1000+999+998)
nums = [1,2,7,6,4]
def solution(nums):
nums.sort()
nums_len = len(nums)
count_can_sosu = 0
for a in range(0, nums_len) :
for b in range(a+1, nums_len) :
for c in range(b+1, nums_len):
summ = nums[a]+nums[b]+nums[c]
if sosu.count(summ) == 1 :
# summ 이 소수 리스트인 nums에 몇개 있는지 반환. 0이면 소수가 아님
count_can_sosu += 1
return count_can_sosu
print(solution(nums))
728x90
'Python' 카테고리의 다른 글
Python 이론 정리 (0) | 2022.06.23 |
---|---|
소수를 리스트에 입력하기 (0) | 2022.02.13 |
돈을 거슬러주고, 로또 번호 주기 (0) | 2022.02.07 |
댓글