[프로그래머스]약수의 개수와 덧셈

비얌·2022년 4월 26일
0

알고리즘

목록 보기
11/17

프로그래머스 1단계 문제인 '약수의 개수와 덧셈' 문제를 풀어보았다.

문제

https://programmers.co.kr/learn/courses/30/lessons/77884

문제 설명

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ left ≤ right ≤ 1,000

입출력 예


내 풀이

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
  1. 먼저 input으로 주어진 left부터 right까지의 수에서 for문으로 일일이 약수를 구했다.

  2. 약수를 구한 방법은, left부터 right까지의 수 i를 예시로 들자면 for문으로 i를 1부터 i까지로 나누며 나누어 떨어지면(=약수이면) cnt를 하나씩 올렸다.

  3. 그리고 총 나온 약수의 개수(cnt)가 홀수이면 0으로 초기화한 answer에서 빼고, 짝수이면 answer에 더해서 answer를 리턴했다.

  4. for문으로 left부터 right까지 answer를 갱신하고, answer를 리턴한 후 종료한다.

profile
🐹강화하고 싶은 기억을 기록하고 공유하자🐹

0개의 댓글