MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์œ ํ•œ์†Œ์ˆ˜ ํŒ๋ณ„ํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์œ ํ•œ์†Œ์ˆ˜ ํŒ๋ณ„ํ•˜๊ธฐ

MUKER 2022. 12. 31. 12:34
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œํ’€์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด์™€
๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด๋กœ ๋‚˜๋ˆ„์–ด ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋ฌธ์ œ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํ’€์ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด

import Foundation

func gcd(a: Int, b: Int) -> Int {
    if a % b == 0 {
        return b
    }
    return gcd(a: b, b: a % b)
}

func solution(_ a:Int, _ b:Int) -> Int {
    var bNum = b / gcd(a: a, b: b)
    var temp = bNum
    var result = [Int]()
    while temp != 1 {
        for i in 2... {
            if temp % i == 0 {
                result.append(i)
                temp = temp / i
                break
            }
        }
    }
    return result.allSatisfy { $0 == 2 || $0 == 5 } ? 1 : 2
}
  • ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ์•ฝ๋ถ„ํ•˜์—ฌ ๊ธฐ์•ฝ๋ถ„์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.
  • b์— ํ•ด๋‹นํ•˜๋Š” ์•ฝ๋ถ„๋œ ๊ฐ’์˜ ์†Œ์ธ์ˆ˜๊ฐ€ 2๋˜๋Š” 5๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ์–ด์•ผ ์œ ํ•œ์†Œ์ˆ˜, ์•„๋‹ˆ๋ผ๋ฉด ๋ฌดํ•œ์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์†Œ์ธ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๋ถ„๋œ b์˜ ๊ฐ’์ด 1์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์ฃผ๊ณ 
  • ์ค‘์ฒฉ ๋ฐ˜๋ณตํ•ด์„œ 2... ์ˆœ์œผ๋กœ ๋ฐ˜๋ณตํ•˜์—ฌ ๋‚˜๋ˆ ์ค๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋˜๋Š” i์˜ ๊ฐ’์€ ๋ฐฐ์—ด์— ์ €์žฅ์‹œ์ผœ ์ค๋‹ˆ๋‹ค.
  • ๋งŒ์•ฝ 2์™€ 5๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์ด ๋‚˜์˜จ๋‹ค๋ฉด (์œ ํ•œ์†Œ์ˆ˜)1์„ ๋ฆฌํ„ด, ์•„๋‹ˆ๋ผ๋ฉด (๋ฌดํ•œ์†Œ์ˆ˜)2๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.

 

๋ ์šฉ?!ํ•œ ํ’€์ด

import Foundation


func solution(_ a:Int, _ b:Int) -> Int {

    var a = a
    var b = b

    while b%2 == 0 { b = b/2 }
    while b%5 == 0 { b = b/5 }

    return (a%b == 0) ? 1 : 2
}
  • ???!
  • ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ... b๊ฐ€ 2๋กœ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋˜๋ฉด ๊ณ„์† ๋‚˜๋ˆ„๊ณ  b/2 ๋ฅผ ํ•˜๊ณ , 5๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ˆ๊นŒ ์ด๊ฒŒ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ด๊ฐ€ ๋˜๊ฒ ๋„ค์š”.
  • ๊ทธ๋Ÿฌ๋ฉด 2,5๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ์œ ํ•œ์†Œ์ˆ˜๋Š” ๋ฌด์กฐ๊ฑด 1์ด ๋˜์–ด์žˆ๊ฒ ๋„ค์š”..
  • ๊ทธ๋ž˜์„œ a % b๋‚˜๋ˆ„์–ด๋„ 0์ด ๋‚˜์˜ค๋Š”๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

func solution(_ a: Int, _ b: Int) -> Int { a * 1_000 % b == 0 ? 1 : 2 }
  • ?!?!?!?!?