[프로그래머스 / lv.1] 약수의 개수와 덧셈
in Problem Solving on Programers
날짜: 2021년 5월 15일
소요 시간: 30분 21초
카테고리: 수학 태그: 레벨1
, 파이썬
입출력 예시
left | right | result |
---|---|---|
13 | 17 | 43 |
24 | 27 | 52 |
내가 적은 코드
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제곱하면 정수로 떨어진다는 걸 어떻게 생각을 해내지…