[Kotlin] ๋‘ ์ •์ˆ˜ ์‚ฌ์ด์˜ ํ•ฉ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜)
๋ฐ˜์‘ํ˜•

 

๋ฌธ์ œ

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

 

 


 

์ ‘๊ทผ

 

  • ๋ฌด์˜์‹์ค‘์— ๋‹น์—ฐํžˆ ์ž…๋ ฅ๋˜๋Š” ๊ฐ’ a, b์— ๋Œ€ํ•ด์„œ a < b๋ผ ์ƒ๊ฐํ–ˆ๊ณ 
    ๊ทธ๋ƒฅ a๋ถ€ํ„ฐ b๊นŒ์ง€ for ๋ฌธ์„ ๋Œ๋ฆฌ๊ณ  sum์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ๊ณ„์† ๋”ํ•ด์„œ returnํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
// ๊ตฌ์ฒด์ ์ธ ๊ตฌ์ƒ, ์˜ค๋‹ต ์ฝ”๋“œ

class Solution {
    fun solution(a: Int, b: Int): Long {
        var sumInt = 0
        for(i in a .. b){
            var sumInt = sumInt + i
        }
        return sumInt.toLong()
    }
}
  • ๊ทธ๋Ÿฐ๋ฐ ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋”๋‹ˆ ๊ฒฐ๊ณผ๊ฐ’์ด ๋ชจ๋‘ 0์ด ๋‚˜์™”๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ๋ณด๋‹ˆ a์™€ b์ค‘ ํฐ ๊ฐ’์ด ๋ญ”์ง€ ๋ชจ๋ฅด๊ณ , ํ•ด๋‹น ๊ฐ’์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.
// ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 1, 3 ์‹คํŒจ

class Solution {
    fun solution(a: Int, b: Int): Long {
        var sumInt = 0
        if(a < b){
            for(i in a .. b){
                var sumInt = sumInt + i
            }
        }
        else if(a > b){
            for(i in b .. a){
                var sumInt = sumInt + i
            }
        } else sumInt = a
        return sumInt.toLong()
    }
}
  • ๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ ๋˜ ํ‹€๋ ธ๋‹ค.
  • ์ด์œ ๋Š” for๋ฌธ ์•ˆ์—์„œ sumInt ์•ž์— var์„ ๊ณ„์† ์„ ์–ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    ์œ„์—์„œ ์„ ์–ธํ•ด๋†“๊ณ  ์•ˆ์—์„œ ๋‹ค์‹œ ๋ณ„๊ฐœ์˜ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์…ˆ์ด๋‹ค.
  • for๋ฌธ ์•ˆ์— ์žˆ๋Š” var๋ฅผ ์‚ญ์ œํ•ด์ฃผ๋‹ˆ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋˜์—ˆ๋‹ค.
// ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 4~10 ์‹คํŒจ

class Solution {
    fun solution(a: Int, b: Int): Long {
        var sumInt = 0
        if(a < b){
            for(i in a .. b){
                sumInt = sumInt + i
            }
        }
        else if(a > b){
            for(i in b .. a){
                sumInt = sumInt + i
            }
        } else sumInt = a
        return sumInt.toLong()
    }
}
  • ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ์—” ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ์‹คํŒจ๊ฐ€ ๋ช‡ ๊ฐœ ๋–ด๋‹ค.
  • ์•„๋ฌด๋ž˜๋„ ๋ฌธ์ œ์—์„œ ๋ฐ˜ํ™˜ํ˜•์„ Long์œผ๋กœ ์„ค์ •ํ•œ ๊ฑฐ ๋ณด๋ฉด Int๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ฒ”์œ„์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค.
    sumInt๋ฅผ ๋‹ค ๊ณ„์‚ฐํ•ด๋†“๊ณ  ๋’ค๋Šฆ๊ฒŒ toLong()์„ ํ•ด๋ดค์ž ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฑฐ๋‹ค.
  • ๋ชจ๋“  ์„ ์–ธํ˜•์„ ๋ฏธ๋ฆฌ Long์œผ๋กœ ๋ณ€ํ™˜ํ•ด๋ณด์•˜๋”๋‹ˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋๋‹ค. ์ฝ”๋“œ๋„ ์ข€ ๋”๋Ÿฌ์›Œ๋ณด์—ฌ์„œ ์ˆ˜์ •ํ–ˆ๋‹ค.

 


 

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

 

class Solution {
    fun solution(a: Int, b: Int): Long {
        var sumLong: Long = 0 // Long์œผ๋กœ ์„ ์–ธ
        
        val start = if (a < b) a else b
        val end = if (a < b) b else a
        
        for (i in start..end) {
            sumLong += i // Long์œผ๋กœ ๋ˆ„์ 
        }
        
        return sumLong
    }
}

 


 

์„ค๋ช…

 

  1. ๋ชจ๋“  ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜ sumLong ๋ฅผ Long ํ˜•ํƒœ๋กœ ์„ ์–ธํ•œ๋‹ค. (: Long ์œผ๋กœ ํ‘œ๊ธฐํ•˜๋“ ์ง€, 0L๋กœ ์„ ์–ธ)
  2. a์™€ b์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ start์™€ end ๋ณ€์ˆ˜์— ๊ฐ๊ฐ ์ง‘์–ด ๋„ฃ๋Š”๋‹ค.
  3. start๋ถ€ํ„ฐ end๊นŒ์ง€ for๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๋”ํ•œ๋‹ค.
    ์—ฌ๊ธฐ์„œ sumLong์„ ๋ฏธ๋ฆฌ Long์œผ๋กœ ์„ ์–ธํ–ˆ์œผ๋ฏ€๋กœ Long์œผ๋กœ ๊ณ„์† ๋”ํ•ด์ง„๋‹ค.
    (๊นŒ๋จน๊ณ  ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋ชปํ–ˆ๋Š”๋ฐ, a์™€ b๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” if~else ๋ฌธ์œผ๋กœ ๋ถ„๊ธฐํ•˜๋ฉด ๋œ๋‹ค.)
  4. ๊ฐ’์ด ๋ชจ๋‘ ๋”ํ•ด์ง„ sumLong์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 


 

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

 

class Solution {
    fun solution(a: Int, b: Int) =
        if (a < b) ((a..b).average() * (b - a + 1)).toLong()
        else if (a > b) ((b..a).average() * (a - b + 1)).toLong()
        else a.toLong()
}
class Solution {
    fun solution(a: Int, b: Int): Long {
        var answer = 0L

        if (a == b){
            return a.toLong()
        }

        var min = Integer.min(a,b)
        var max = Integer.max(a,b)

        for (i in min .. max){
            answer += i
        }

        return answer
    }
}
  • average()๋‚˜ min, max()๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ์‹  ๋ถ„๋“ค์ด ์žˆ์—ˆ๋‹ค.

 

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