본문 바로가기

# 02/Swift - CTP

[Swift] 백준! 2981번 - 검문

반응형

https://www.acmicpc.net/problem/2981

 

2981번: 검문

트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간

www.acmicpc.net

import Foundation

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

let n = Int(readLine()!)!
var l:[Int] = []
var minv = 1000000000
for _ in 1...n {
    let num = Int(readLine()!)!
    l.append(num)
    if num < minv {
        minv = num
    }
}

var str = ""
var v = l[0]-minv
for i in 1...l.count-1 {
    if l[i] > minv {
        v = gcd(v, l[i]-minv)
    }
}

if v > 3 {
    for i in 2...v/2 {
        if v%i == 0 {
            if str == "" {
                str += "\(i)"
            } else {
                str += " \(i)"
            }
        }
    }
}
if str == "" {
    str += "\(v)"
} else {
    str += " \(v)"
}

print(str)
반응형