코딩테스트
[프로그래머스] 약수의 개수와 덧셈 (Kotlin)
깨비도
2024. 5. 27. 20:37
❓ 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
💡 풀이
class Solution {
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
for (i: Int in left .. right) {
var cnt: Int = 0 // 각 수 마다의 약수의 개수의 합
for(j: Int in 1 .. i) if(i % j == 0) cnt++ //약수의 개수 구한 것
if(cnt % 2 == 0) answer += i else answer -= i // 약수가 짝수면 더하고 홀수면 빼는 식
}
return answer
}
}
- left와 right 범위 안의 숫자 만큼 i 반복문을 돌린다.
- left부터 right까지의 각 숫자들의 약수를 구하기 위해 j 반복문을 돌린다.
- 숫자 i를 1부터 i까지의 숫자 j로 나누어 값이 떨어지면 1씩 더해 약수의 총 개수를 구한다.
- 만약 cnt가 짝수면 i숫자를 더하고 그렇지 않으면 i숫자를 뺀다.
오랜만에 문제를 풀어서 그런지 문법 자체는 항상 사용하던 익숙한 것들이었지만 식을 짜는 데에 많이 어려움을 겪었다. 반복문을 두 번 돌리고, 그 안에서 i와 j 값이 헷갈리기 시작해서 해설을 잘 풀어 정리해보는 것으로 복습한다.
다시 열심히 공부 하자!
