📝 문제 요약
> 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
예시처럼 left부터 right 범위 안에 숫자가 여러개 있다. 위 예시에서는 left = 13, right = 17이 입력된 것이다. 약수의 개수에 따라 +, -가 결정이 된다. 만약 약수의 개수가 짝수라면 +, 홀수면 - 해야한다.
🎨 풀이
💡 첫번째 시도 = 성공(은 아니지만 다른 코드가 기억이 안난다 ㅠㅠ)
def solution(left, right):
answer = 0
count = 1 # 약수 1 때문에 count = 1임.
for num in range(left, right+1):
for i in range(2,num+1):
if num % i == 0:
count += 1
if count % 2 == 0:
answer += num
count = 1
else :
answer -= num
count = 1
return answer
>
[참고] count = 1인 이유는, 1은 모든 수의 약수가 되기 때문에 미리 포함해둔것이다.
1. for문을 돌면서 먼저 left ~ right +1 사이의 값 중 하나를 선택한다.
2. num % i 를 통해 약수인지 체크한다. 만약 약수가 맞다면 count += 1을 해준다.
3. 약수 체크가 끝난 후에는 count(약수의 개수)에 들어있는 값이 짝수인지 홀수인지 체크를 해주고 answer에서 해당 수를 더하거나 빼준다. (count = 1로 다시 초기화시킨다)

끝~
⭐ 느낀점
> 이것도 뭐.. 쉬운 문제였다. 요즘 나는 level 2를 조금 풀어보는 중인데.. 넘 막막하다. 연습문제도 어려워서 큰일이다. 그래도 이런 거라도 알아서 다행이네 싶기도 하고.. 여튼 그렇다. 좀 분발할 필요가 있어보인다. ㅠㅠ 분발!
'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 1] 예산 (파이썬) (0) | 2022.04.10 |
---|---|
[프로그래머스 / Level 1] 3진법 뒤집기 (파이썬) (0) | 2022.04.09 |
[프로그래머스 / Level 1] 폰켓몬 (파이썬) (0) | 2022.04.07 |
[프로그래머스 / Level 1] 체육복 (파이썬) (0) | 2022.04.06 |
[프로그래머스 / Level 1] K번째수 (파이썬) (0) | 2022.04.05 |