본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 2839번 (설탕 배달)

by Joahnee 2021. 8. 6.

요구능력 : 잘 모르겠다.

코드설명 : 

처음에는 5의 배수이면 그냥 5로 나눠버리면 그게 제일 적은 설탕봉지니까 조건을 줫고, N에 0을 준 이유는 아래에서 N이 0이 아니면 정확한 N킬로가 안나오다고 해둿기 때문이다.

while문에 N > 0 를 조건으로 준 이유는 N을 지속적으로 빼고 나눌건데,

만약 정확한 N킬로가 나온다면 N은 0이 될거고 아니라면 N은 - 가 나올것이다.

계속 3으로 빼주고 5로 나눠지는지 확인하기 때문.

 

가방을 최대한 적게 들어야 된다고 했으므로, N을 3으로 빼다가 N이 5에 나누어 떨어진다면 N이 결국 최소한의 가방이 나온다.

 

 

후기 : 처음에 방향을 잘못잡아서 이상한 길에 빠져버리고 오래걸려버린..

 

 

var N = Int(readLine()!)!
var result = 0
if N % 5 == 0 {
    result = N / 5
    N = 0
}else {
    while N > 0 {
        N -= 3
        result += 1
        if N % 5 == 0 {
            result += N / 5
            N = N % 5
            break
        }
    }
}

if N != 0 {
    result = -1
}
print("\(result)")

댓글