๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Kotlin/Programmers Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฝ”ํ‹€๋ฆฐ] ํ•˜์ƒค๋“œ ์ˆ˜ #12947

by eun.24k 2023. 10. 22.

#12947

๐ŸŽ„ Question ?

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

class Solution {
    fun solution(x: Int): Boolean {
        var answer = true
        return answer
    }
}

๐Ÿงฉ Thought Process

  1. ์ž…๋ ฅ๊ฐ’ x๋ฅผ ๋ฌธ์ž์—ด-> CharArray๋กœ ๋ฐ”๊พธ์–ด์ค€๋‹ค.
  2. size ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ฐพ์Œ์œผ๋กœ์จ ์ž…๋ ฅ๋œ ๊ฐ’ x์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
  3. ๋ชจ๋“  ์ž๋ฆฟ์ˆ˜์˜ ๊ฐ’์„ for๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๋”ํ•œ๋‹ค. ์ด๋•Œ CharArray์˜ ๊ฐ’๋“ค์„ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  4. ์ž…๋ ฅํ•œ x๋ฅผ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ์ฐธ ์•„๋‹ˆ๋ฉด ๊ฑฐ์ง“

 

๐ŸŽ€ Answer

ํ’€์ด #1

class Solution {
    fun solution(x: Int): Boolean {
        var answer = true
        var sum = 0
        var xCharArray = x.toString().toCharArray()
        var arraySize = xCharArray.size
        var xIntArray = IntArray(arraySize)
        for (i in 0 until arraySize) {
            xIntArray[i] = xCharArray[i].digitToInt()
            sum += xIntArray[i]
        }
        if (x % sum == 0) {
            answer = true
        } else {
            answer = false
        }
        return answer
    }
}

ํฌ์œผ ๋ฐฉ๊ธˆ ์ „์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์™€ ์ง€๋‚œ์ฃผ์— ๋ฐฐ์šด ๊ฐœ๋…์„ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ’€์ด๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๋‹ค. ๋ถ„๋ช… ๋‹ค๋ฅธ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋ฉด ์งง๊ณ  ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“  ์ฝ”๋“œ๊ฐ€ ์žˆ๊ฒ ์ง€?

ํ’€์ด #2

class Solution {
	fun solution(x: Int): Boolean {
    	var sum = 0
        var tempX = x
        
        while (tempX != 0) {
        	sum += tempX % 10
            tempX /= 10
        }
        return (x % sum == 0)
    }
}

๋‚˜๋Š” ์•„์ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ while๋ฌธ์„ ์ž˜ ์•ˆ ์ผ๋Š”๋ฐ ์‹ ๊ธฐํ•œ ํ’€์ด์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์˜ค ์ด๋ ‡๊ฒŒ๋„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ตฌ๋‚จ

ํ’€์ด #3

class Solution {
	fun solution(x: Int): Boolean {
    	var answer = true
        var sum = 0
        
        x.toString().map {
        	sum += (it.toInt() - '0'.toInt())
        }
        return x % sum == 0
    }
}

** ์ดํ•ด๊ฐ€ ์•ˆ๋œ๋‹น.. ๋‚ด์ผ ์™€์„œ ๊ณต๋ถ€ํ•ด์•ผ์ง•

ํ’€์ด #4

class Solution {
	fun solution(x: Int): Boolean {
    	return x % x.toString().fold(0) { acc, c -> acc + c.toInt() - 48 
        } == 0
    }
}

์—ฌ๊ธฐ๋„ ๊ณต๋ถ€!

๐ŸŽ Result

 

 

๐Ÿ† Comment

์ „์— ๋‚ด๊ฐ€ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ ์œ„์ฃผ๋กœ๋ฐ–์— ์ƒ๊ฐ์„ ๋ชปํ•ด์„œ ๊ณ„์† for๋ฌธ/if๋ฌธ๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋‹ค์–‘ํ•œ ํ’€์ด๋ฅผ ๋ณด๋ฉด์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.