(Swift) 백준 13458 시험 감독

SteadySlower·2022년 8월 25일
0

Coding Test

목록 보기
132/298

13458번: 시험 감독

문제 풀이 아이디어

계산 자체는 간단한 문제입니다.

하지만 한명의 주감독관이 모두 감독을 할 수 있을 때 1을 출력하는 경우와 주감독관이 감독하고 남은 학생들(A[i] - B)이 부감독관이 감독할 수 있는 수 (C)로 나누어 떨어지지 않는 경우 + 1을 해주는 2가지 예외를 신경 써주어야 합니다.

코드

// 입력 받기
let N = Int(readLine()!)!
let rooms = readLine()!.split(separator: " ").map { Int(String($0))! }
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let B = input[0], C = input[1]

// 필요한 감독관의 수를 구하기
func getNumber(_ n: Int) -> Int {
    var result = 0
    var num = n
    
    // 주 감독관이 담당하는 학생만큼 빼기
    num -= B
    result += 1
    
    // 주 감독관이 모두 커버할 수 있는 경우
    if num <= 0 {
        return result
    }
    
    // 부감독관의 수 구하기
    if num % C == 0 {
        result += num / C //👉 나누어 떨어지는 경우
    } else {
        result += num / C + 1 //👉 나누어 떨어지지 않으면 1명 추가
    }
    
    return result
}

var cnt = 0

for room in rooms {
    cnt += getNumber(room)
}

print(cnt)
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글