❓ 약수의 개수와 덧셈
두 정수 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 값이 헷갈리기 시작해서 해설을 잘 풀어 정리해보는 것으로 복습한다.
다시 열심히 공부 하자!
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 행렬의 곱셈 (Kotlin) (0) | 2024.06.20 |
---|---|
[프로그래머스] 과일 장수 (Kotlin) (0) | 2024.06.18 |
[프로그래머스] 명예의 전당 (1) (Kotlin) (2) | 2024.06.15 |
[프로그래머스] 가장 가까운 같은 글자 (Kotlin) (1) | 2024.06.15 |
[프로그래머스] 콜라문제 (Kotlin) (1) | 2024.06.14 |