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

 

๋ฌธ์ œ

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

 

 


 

์ ‘๊ทผ

  • ๋˜ ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ํ’€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋ฌธ์ œ ์ œ๋Œ€๋กœ ์ฝ๋Š” ๋Šฅ๋ ฅ์ด ํ•„์š”
  • ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ๊ฐ€์ง€๋Š” ์ž๋ฆฌ ๊ฐœ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ƒ๋Š” ๋ฌธ์ œ์ธ์ง€ ์•Œ์•„์„œ x๋ฅผ ๋ฐฐ์—ด๋กœ ์ชผ๊ฐœ ๋„ฃ์–ด์„œ size๋กœ ๋ฐฐ์—ด ํฌ๊ธฐ๋ฅผ ์žฐ ๋‹ค์Œ,
    if๋ฌธ x % (๋ฐฐ์—ด ํฌ๊ธฐ)๊ฐ€ 0์ด๋ƒ ์•„๋‹ˆ๋ƒ์— ๋”ฐ๋ผ true์™€ false๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์•˜๋‹ค.
// ์ดˆ๊ธฐ ๊ตฌ์ƒ, ์˜ค๋ฅ˜ ์ฝ”๋“œ

class Solution {
    fun solution(x: Int): Boolean {
        
        var Array : IntArray = x.toString()
                                .split("")
                                .filter{it != ""}
                                .map {it.toLong()}
                                .toIntArray()
        var size = Array.size
        
        if(x % size == 0) { return true }
        else { return false }
        
    }
}
  • ์•Œ๊ณ ๋ณด๋‹ˆ ์ž๋ฆฌ์— ์žˆ๋Š” ์ˆ˜๋งˆ๋‹ค ๊ฐ๊ฐ์„ ๋‹ค ๋”ํ•˜๊ณ  ๊ทธ๊ฑธ ๋น„๊ตํ•˜๋Š” ๊ฑฐ์˜€๋‹ค.

 

// 4๊ฐœ ์ค‘ 2๊ฐœ ์˜ค๋ฅ˜ 

class Solution {
    fun solution(x: Int): Boolean =
    if(x % (x.toString().map{it.toInt()}.sum()) == 0) true else false
    }
  • ๊ทธ๋ž˜์„œ ์œ„์™€ ๊ฐ™์ด if๋ฌธ์œผ๋กœ ๋ถ„๊ธฐ์‹œํ‚ค๊ณ  ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ 2๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํŒจํ–ˆ๋‹ค.

 


 

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

class Solution {
    fun solution(x: Int): Boolean =
    if(x % (x.toString().map{it - '0'}.sum()) == 0) true else false
    }

 


 

์„ค๋ช… ๋ฐ ์˜๋ฌธ

 

  1. x์˜ ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๋‚˜๋ˆ  0์ด ๋˜๋ฉด true, ์•„๋‹ˆ๋ฉด false๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. ๊ฐ ์ž๋ฆฌ์ˆ˜๋ฅผ ๋”ํ•˜๊ธฐ ์œ„ํ•ด์„œ x๋ฅผ string์œผ๋กœ ๋ฐ”๊พธ๊ณ , map๊ณผ sum์„ ์ด์šฉํ•ด ๊ฐ๊ฐ์˜ ์ž๋ฆฌ๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋”ํ•œ๋‹ค.
  3. ๊ทธ๋Ÿฐ๋ฐ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. ์ดˆ๊ธฐ์— ๋‚ด๊ฐ€ ๊ตฌ์ƒํ–ˆ๋˜ ๊ฒƒ์ด ์™œ ํ‹€๋ ธ์„๊นŒ?
  4. map ์•ˆ์—์„œ it - '0'์„ ์™œ ์จ์•ผํ•˜๋Š”์ง€ ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์ฐพ์•„๋ณด๋‹ˆ ๋‚ด์šฉ์€ ์ด๋Ÿฌํ•˜๋‹ค.
    ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ž '0'์€ ASCII ์ฝ”๋“œ์—์„œ ์ˆซ์ž 48์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ž '0'์—์„œ ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ๋บŒ์œผ๋กœ์จ ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ž '3'์˜ ASCII ์ฝ”๋“œ ๊ฐ’์€ 51์ด๋ฉฐ, ๋ฌธ์ž '0'์˜ ASCII ์ฝ”๋“œ ๊ฐ’์€ 48์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ '3' - '0'์€ 51 - 48์ด ๋˜์–ด 3์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ it - '0'์€ ๋ฌธ์ž๋ฅผ ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ด๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„๋œ ์ˆซ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋‹ค.
  5. ๊ทธ๋Ÿฌ๋‚˜ ์™œ map{it.toInt()}๋Š” ์•ˆ๋˜๊ณ  map{it - '0'}์€ ๋˜๋Š” ๊ฑด์ง€...
    ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์ด ๋ฌธ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ • ์•„๋‹Œ๊ฐ€?
    ์™œ ๊ตณ์ด ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์ด์šฉํ•œ ๊ณ„์‚ฐ์„ ํ•˜๋Š”์ง€ ๊ต‰์žฅํ•œ ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค.

 

  1. it.toInt()๊ฐ€ ์•ˆ ๋๋˜ ์ด์œ ์— ๋Œ€ํ•ด ํŠœํ„ฐ๋‹˜์ด ์ž˜ ์•Œ๋ ค์ฃผ์…”์„œ ๋“œ๋””์–ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค...
  2. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์—์„  ์˜ค๋ฅ˜๊ฐ€ ๋œจ์ง€ ์•Š๊ณ , ๋กœ๊ทธ๋„ ๋œจ์ง€ ์•Š์•„ ํ™•์ธํ•  ์ˆ˜ ์—†์—ˆ๋Š”๋ฐ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค๋กœ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  3. ์ผ๋‹จ map์˜ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋ฉด ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ctrl+ํด๋ฆญ์œผ๋กœ map์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ง์ ‘ ํ™•์ธํ•ด ๋ณด๋Š” ๋ฐฉ๋ฒ•์ด ์ œ์ผ ์ข‹๋‹ค.
  4. map{it.toInt()}๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ์ด์œ ๋Š” String์— map์„ ์“ฐ๋ฉด it์ด String์ด ์•„๋‹Œ Char๋กœ ๋“ค์–ด์™€์„œ๋‹ค.
  5. ๋”ฐ๋ผ์„œ it.toString().toInt()๋กœ ํ•˜๋ฉด ํ•ด๊ฒฐ ๋œ๋‹ค. - Char์—์„œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๊ฑด ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
  6. ์ด์œ : https://kotlinworld.com/436

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์ด๋ฅผ ์ •ํ™•ํžˆ ๋ณผ ์ˆ˜ ์žˆ์Œ

 


 

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

class Solution {
    fun solution(x: Int): Boolean =
        x % x.toString().sumBy { it.toInt() - 48 } == 0
}
  • ์• ์ดˆ์— ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด Boolean์ด๊ธฐ์— ๋”ฐ๋กœ ์กฐ๊ฑด๋ฌธ ์ฒ˜๋ฆฌ ์—†์ด = ์œผ๋กœ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•ด์คฌ๋‹ค.
  • sum ๋Œ€์‹  sumBy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์„ ๋”ํ•ด์ฃผ์—ˆ๋‹ค.
  • ์–˜๋Š” ๊ทผ๋ฐ it.toInt()๋ฅผ ์–ด๋–ป๊ฒŒ ์“ด ๊ฑธ๊นŒ................................. ์•„๋ฌด๋ž˜๋„ ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„  ์ผ๋‹จ ๊ณผ์ œ๋ถ€ํ„ฐ ์ œ์ถœํ•˜๊ณ  ๋” ์ƒ๊ฐํ•ด๋ด์•ผ๊ฒ ๋‹ค............

 

class Solution {
    fun solution(x: Int): Boolean = if (x % digitSum(x) == 0) true else false
}

fun digitSum(number: Int): Int {
    var sum = 0
    var n = number
    while (n != 0) {
        sum += n % 10 // ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•จ
        n /= 10 // ๋‹ค์Œ ์ž๋ฆฟ์ˆ˜๋กœ ์ด๋™
    }
    return sum
}
  • ๊ฐ€์žฅ ์ •์„์ ์ธ ํ’€์ด ๋ฐฉ๋ฒ• ๊ฐ™๋‹ค.
  • %10 ๊ณผ /10์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๊ฐ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์„ ๋„ฃ์–ด ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

 

 

 

 

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