[프로그래머스 / lv.1] 약수의 개수와 덧셈


날짜: 2021년 5월 15일
소요 시간: 30분 21초
카테고리: 수학 태그: 레벨1, 파이썬

코딩테스트 연습 - 약수의 개수와 덧셈

입출력 예시

leftrightresult
131743
242752

내가 적은 코드

def solution(left, right):
    answer = 0
    for num in range(left,right+1):
        measure_count = 0
        for measure_check in range(1,num+1):
            if num % measure_check == 0:
                measure_count += 1
        if measure_count % 2 == 0:
            answer += num
        else:
            answer -= num
    return answer

풀이 과정

left에서 right까지의 수를 반복문을 활용해서 하나씩 약수의 개수를 체크했다.
1부터 num까지 차례차례 num을 나누었을 때 나머지가 0이 되면 measure_count를 1 증가시켜 measure_count를 2로 나눈 나머지를 통해 약수의 개수가 짝수개인지 홀수개인지를 판별했다.

베스트 코드

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

반성

    • 알고리즘 문제를 많이 풀지 않아서 익숙하지 않은 탓인지 기본적인 수학문제임에도 시간을 많이 썼다.
  • range(a,b)의 이해도가 낮아 +1을 놓쳐 해맸다.
  • 베스트 코드 짜는 애들은 약수의 개수가 홀수개면 0.5제곱하면 정수로 떨어진다는 걸 어떻게 생각을 해내지…




© 2021. by hminkim