해결된 질문
작성
·
345
0
def solution2(nums):
a = itertools.combinations(nums,3)
answer = 0
for num in (a):
nums = sum(num)
cnt = 0
for i in range(2,nums):
if nums %i ==0:
break
else:
answer += 1
return answer
이 코드에서 마지막에 for 루프가 돌면서 예를들어 nums 가 7이면 7의 2,3,4,5,6을 돌 때 answer에 계속 1을 더해주는게 아닌가요? 왜 이렇게 하면 소수 갯수가 정상적으로 나올 수 있는지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
주신 코드에서는 주어진 숫자 중 3개씩 조합을 만들고, 각 조합의 합을 구한 뒤 소수인지 아닌지를 판별하는 로직으로 작성되어 있습니다.
for 루프에서는 각 조합의 합을 변수 nums에 저장하고, 2부터 nums-1까지의 수로 나누어서 나머지가 0인 경우가 있으면 소수가 아니라고 판단하고 for 루프를 중단합니다. 만약 소수인 경우에는 for 루프가 완전히 종료되고 answer 변수에 1을 더해줍니다.
따라서, nums가 7인 경우를 예로 들면, for 루프에서는 2, 3, 4, 5, 6까지의 수로 나누어보고 소수가 아니므로 계속해서 answer에 1을 더해주게 됩니다.
따라서 answer는 5가 됩니다.
이 코드는 주어진 숫자 중 3개를 조합하여 나오는 모든 합에 대해서 소수인지 아닌지를 판별하는 것이기 때문에, 소수의 갯수를 구할 때 사용할 수 있습니다.
하지만, 주어진 문제의 의도에 따라 문제를 푸는 방식에 따라 코드를 작성해야 합니다.
원하는 결과를 얻기 위해서는 코드의 로직을 다시 고려해야 할 수도 있습니다.
소수의 갯수를 구하는 것이 목적이라면, 조합을 사용하여 모든 합을 구하는 방법보다 더 효율적인 알고리즘을 사용하는 것이 좋을 수 있습니다.
소수를 판별하는 방법에 대해 조금 더 고려해보시면 좋을 것 같아요. 수학적인 원리를 이용하거나 에라토스테네스의 체와 같은 알고리즘을 적용해볼 수도 있습니다.
더 도움이 필요하시다면, 질문해주세요!