프로그래머스 1단계 문제인 '약수의 개수와 덧셈' 문제를 풀어보았다.
https://programmers.co.kr/learn/courses/30/lessons/77884
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
def solution(left, right):
answer = 0
for i in range(left, right+1):
cnt = 0
for j in range(1, i+1):
if i % j == 0:
cnt += 1
if cnt % 2 == 0:
answer += i
else:
answer -= i
return answer
먼저 input으로 주어진 left부터 right까지의 수에서 for문으로 일일이 약수를 구했다.
약수를 구한 방법은, left부터 right까지의 수 i를 예시로 들자면 for문으로 i를 1부터 i까지로 나누며 나누어 떨어지면(=약수이면) cnt를 하나씩 올렸다.
그리고 총 나온 약수의 개수(cnt)가 홀수이면 0으로 초기화한 answer에서 빼고, 짝수이면 answer에 더해서 answer를 리턴했다.
for문으로 left부터 right까지 answer를 갱신하고, answer를 리턴한 후 종료한다.