두 정수 left
와 right
가 매개변수로 주어집니다. left
부터 right
까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
left
≤ right
≤ 1,000최종 코드
class Solution {
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
for(i in left .. right){
var evenCount = 0
for(j in 1 .. right){
if(i % j==0){
evenCount ++
}
}
if(evenCount % 2 == 0){
answer += i
}else{
answer -= i
}
}
return answer
}
}
풀이 과정
class Solution {
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
var count = 0
for(i in left .. right){
for(j in 1 .. right){
if(i % j==0){
count ++
}
}
if(count % 2 == 0){
answer += i
}else{
answer -= i
}
}
return answer
}
}
코드 잘짠거같은데 답이 틀림
why!?!?
class Solution {
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
for(i in left .. right){
var evenCount = 0
for(j in 1 .. right){
if(i % j==0){
evenCount ++
}
}
if(evenCount % 2 == 0){
answer += i
}else{
answer -= i
}
}
return answer
}
}
이것 저것 해보다가 혹시몰라서 약수 개수를 넣는 count를 for 문 안에 넣어줬더니 통과함..
변수를 반복문 안에 선언하면 각 루프 반복마다 변수가 초기화되는데
밖에다 선언하면 초기화가 제대로 안돼서 잘못된 값이 나왔던 것이였당~~ 고민해결
어쩐지 나 코드 맞게 짠거같은데 왜 틀렸지했넹~ ㅋ
원래 어제 푼건데.. 어제 아파서 이거밖에 못하고 드러누워서 TIL도 못쓰고 글도 못올렸당..
그래서 오늘 올림~