๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ Swift

by Fomagran ๐Ÿ’ป 2020. 2. 29.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ์„ค๋ช…

๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”. ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ๊ทธ๋‹ค์Œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๋„ฃ์–ด ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‘ ์ˆ˜ 3, 12์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 3, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” 12์ด๋ฏ€๋กœ solution(3, 12)๋Š” [3, 12]๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ œํ•œ ์‚ฌํ•ญ

  • ๋‘ ์ˆ˜๋Š” 1์ด์ƒ 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

n m return
3 12 [3, 12]
2 5 [1, 10]

ํ’€์ด:

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฒ•

n๊ณผ m์ค‘ ์ž‘์€ ์ˆ˜ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ํ•˜๊ณ  ๋งŒ์•ฝ n๊ณผ m ๋‘˜ ๋‹ค ๋‚˜๋ˆด์„ ๋•Œ 0์ด ๋˜๋Š” ์ˆ˜๊ฐ€ ์žˆ์œผ๋ฉด max๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ”์ค€๋‹ค.

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฒ•

n๊ณผm์ค‘ ์ž‘์€ ์ˆ˜๋กœ n์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋‚˜๋ˆด์„ ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ฉด ๋ฐ˜๋ณต์„ ์ค‘๋‹จํ•˜๊ณ  min๋ณ€์ˆ˜์— n์˜ ๋ฐฐ์ˆ˜๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. ์•„๋‹ˆ๋ฉด ์ฐจ๋ก€๋กœ 1์”ฉ ๋”ํ•ด์ค€๋‹ค. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
func solution(_ n:Int, _ m:Int-> [Int] {
    var max = Int()
    var min = Int()
    var x = 1
    if n > m {
        for i in 1...m{
            if n%i == 0 && m%i == 0{
                max = i
            }
        }
        while n*x%m != 0{
            x += 1
        }
        min = n*x
        return [max,min]
    } else {
        for i in 1...n{
             if n%i == 0 && m%i == 0{
                           max = i
                       }
        }
        while m*x%n != 0{
            x += 1
        }
        min = m*x
        return [max,min]
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด ์ค‘ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ

ํ’€์ด: ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ ๊ฐ ๋งŒ๋“ค์—ˆ๋‹ค.

์šฐ์„  ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ a๋ฅผ b๋กœ ๋‚˜๋ˆด์„ ๋•Œ 0์ด๋ผ๋ฉด a,b์ค‘ ์ž‘์€ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ ์•„๋‹ˆ๋ผ๋ฉด b์™€ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๊ฐ’์„ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์„ ๋‹ค์‹œ ๋ฐ˜๋ณตํ•ด๋ผ.

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฒ•์„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ a,b๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋‚˜๋ˆˆ ๊ฒƒ.

1
2
3
4
5
6
7
8
9
10
11
12
13
func gcd(_ a: Int, _ b: Int-> Int {
    let mod: Int = a % b
    return 0 == mod ? min(a, b) : gcd(b, mod)
}
 
func lcm(_ a: Int, _ b: Int-> Int {
    return a * b / gcd(a, b)
}
 
func solution(_ n:Int, _ m:Int-> [Int] {
    return [gcd(n, m), lcm(n, m)]
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€