Python/Coding Test

[Coding Test] 약수의 개수와 덧셈

gangee 2023. 5. 10. 16:24
728x90
반응형

프로그래머스 코딩테스트 1단계 : 약수의 개수와 덧셈

문제 설명

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

입출력 예

문제 풀이

  • 반복문을 통해 i의 값을 left부터 right까지 반복
  • i의 약수의 개수가 홀수이면 제곱근을 가진다는 것을 이용해 조건문 생성
  • 약수의 개수가 홀수이면, answer에서 뺌
  • 약수의 개수가 짝수이면, answer에 더함

정답 코드

def solution(left, right):
    answer = 0

    for i in range(left, right+1):
        if int(i**0.5) == i**0.5:  # 홀수이면 제곱근을 가짐
            answer -= i
        else:
            answer += i

    return answer

처음 작성한 코드

def solution(left, right):  

    answer = 0  

    for i in range(left, right+1):  
        if len(i%1==0)%2 == 0:  
            answer += i  
        else:  
            answer -= i  

    return answer
  • 조건문으로 값을 1로 나누었을 때 나머지가 0인 값(약수)의 개수를 2로 나누었을 때 나머지가 0인 값(짝수)을 구함
  • 조건에 맞는 값을 answer에 더함
  • 조건에 맞지 않는 값(약수의 개수가 홀수 일 때)을 answer에서 뺌
  • if문에서 Type오류 발생
728x90
반응형