[Kotlin] ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง์…ˆ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜)
๋ฐ˜์‘ํ˜•

 

 

 

 

๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/77884

 

 

 


 

์ ‘๊ทผ

 

  • ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์ƒํ–ˆ๋Š”๋ฐ ArithmeticException ์˜ˆ์™ธ๊ฐ€ ๋‚ฌ๋‹ค.
์ ‘๊ทผ, "main" java.lang.ArithmeticException ๋ฐœ์ƒ


class Solution {
    fun solution(left: Int, right: Int): Int {
        
        var answer = 0
        for(i in left .. right){  // left๋ถ€ํ„ฐ right๊นŒ์ง€ ๋ฐ˜๋ณต
            
            var count = 0
            for(v in 0..i){
                if(i % v == 0) count++
            }  // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์‹
            
            if(count % 2 == 0) answer += i else answer -= i
            // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ฉด answer์— ๋”ํ•˜๊ณ , ์ง์ˆ˜๋ฉด ๋บŒ
                                    
        }
        return answer
        // answer๋ฅผ ๋ฆฌํ„ด
    }
}
  • for(v in 0..i){ if( i % v == 0) count ++} ์—์„œ i๋ฅผ 0์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ ์ƒ๊ธด ๋ฌธ์ œ๋‹ค.
  • 1๋กœ ์ˆ˜์ •ํ•˜๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

 


 

์„ฑ๊ณต ์ฝ”๋“œ

 

class Solution {
    fun solution(left: Int, right: Int): Int {
        
        var answer = 0
        for(i in left .. right){  // left๋ถ€ํ„ฐ right๊นŒ์ง€ ๋ฐ˜๋ณต
            var count = 0
            for(v in 1..i){
                if(i % v == 0) count++
            }  // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ์‹
            
            if(count % 2 == 0) answer += i else answer -= i
            // ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ฉด answer์— ๋”ํ•˜๊ณ , ์ง์ˆ˜๋ฉด ๋บŒ
                                    
        }
        return answer
        // answer๋ฅผ ๋ฆฌํ„ด
    }
}

 


 

์„ค๋ช…

 

  1. left ์ˆ˜๋ถ€ํ„ฐ right ์ˆ˜๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” for๋ฌธ์„ ๋งŒ๋“ ๋‹ค.
  2. for๋ฌธ ์•ˆ์—์„œ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ 
  3. ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ์ง€ ํ™€์ˆ˜์ธ์ง€ ํŒ๋‹จํ•ด answer์— ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์ฃผ๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.
  4. answer๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

 


 

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•

 

class Solution {
    fun solution(left: Int, right: Int): Int {
        return (left..right).map { i -> if ((1..i).filter { i % it == 0 }.size % 2 == 0) i else -i }.sum()
    }
}
  • map๊ณผ filter, ๋žŒ๋‹คํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ํ’€์ด๋‹ค.
  • (left..right)
    left๋ถ€ํ„ฐ right๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋ฒ”์œ„์— ํฌํ•จ๋œ ๋ชจ๋“  ์ •์ˆ˜๋“ค์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.
  • .map { i -> ... }
    ์ƒ์„ฑ๋œ ๋ฒ”์œ„์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ๋žŒ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•œ๋‹ค. ๊ฐ ์š”์†Œ๋ฅผ i๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„๋“ค์ด๊ณ , ๋žŒ๋‹ค ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.
  • (1..i).filter { i % it == 0 }
    1๋ถ€ํ„ฐ i๊นŒ์ง€์˜ ๋ฒ”์œ„์—์„œ i๋ฅผ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ธ ์š”์†Œ๋“ค์„ ํ•„ํ„ฐ๋งํ•œ๋‹ค. ์ฆ‰, i์˜ ์•ฝ์ˆ˜๋“ค์„ ๊ตฌํ•œ๋‹ค.
  • .size
    ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
  • % 2 == 0
    ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์ง์ˆ˜์ด๋ฉด ์ฐธ(true)์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ™€์ˆ˜์ด๋ฉด ๊ฑฐ์ง“(false)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • if ... i else ... -i
    ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋ฉด i๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํ™€์ˆ˜์ด๋ฉด -i๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • .sum()
    ์„ ํƒ๋œ ๊ฐ’๋“ค์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

 

 

 

 

 

๋ฐ˜์‘ํ˜•
 ๐Ÿ’ฌ C O M M E N T