DHistory
[Programmers] Level 1 - 약수의 개수와 덧셈 본문
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
"""
약수의 개수가 짝수인 경우 => +
약수의 개수가 홀수인 경우 => -
"""
def solution(left, right):
    answer = 0
    
    for number in range(left, right + 1):
        count = count_divisor(number)
        if count % 2 == 0:
            answer += number
        else:
            answer -= number
    return answer
def count_divisor(number):
    count = 0
    
    for i in range(1, int(number**(1/2)) + 1):
        if number % i == 0:
            if i == number**(1/2):
                count += 1
            else:
                count += 2
    return count
채점 결과

풀이 (리팩토링)
def solution(left, right):
    return sum(
        [-number if int(number**(1/2)) == number**(1/2) else number for number in range(left, right + 1)]
    )
채점 결과

'Computer Science > Algorithm' 카테고리의 다른 글
| [Programmers] Level 1 - 음양 더하기 (0) | 2023.08.03 | 
|---|---|
| [Programmers] Level 1 - 로또의 최고 순위와 최저 순위 (0) | 2023.08.03 | 
| [Programmers] Level 1 - 숫자 문자열과 영단어 (0) | 2023.08.03 | 
| [Programmers] Level 1 - 부족한 금액 계산하기 (0) | 2023.08.03 | 
| [Programmers] Level 1 - 없는 숫자 더하기 (0) | 2023.08.03 |