Menu
Coddy logo textTech

이벤트 일정 관리

Coddy Swift 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 56번째.

challenge icon

챌린지

어려움

표준 프로토콜을 사용하여 이벤트 스케줄러를 구현하세요. Event는 title, day(1-31), start 및 end 시간을 갖는 구조체입니다. Comparable(일, 그다음 시작 시간, 그다음 제목 순), Hashable이며, 제목과 일만을 기준으로 Equatable(동일한 이벤트가 두 번 입력된 경우)입니다. 또한 CustomStringConvertible으로서 day 3 09-11 standup 형식으로 표시됩니다. Scheduler 클래스에는 add(_:)가 있으며, 이 메서드는 added, duplicate(같은 날의 동일한 제목) 또는 conflicts with <title>(해당 날짜에 이미 존재하며 시간이 겹치는 이벤트: 한 이벤트가 다른 이벤트가 끝나기 전에 시작하는 경우)를 반환합니다. agenda()는 이벤트를 정렬하여 반환하고, busiestDay()는 busiest day 3: 5h 또는 no events를 반환합니다.

제공된 코드는 이벤트를 title,day,start,end 형식의 줄로 읽고 각 이벤트에 대한 응답을 출력한 다음, 일정(줄마다 이벤트 하나)과 가장 바쁜 날을 출력합니다.

코드는 Event.swift와 Scheduler.swift에 작성하세요. main.swift에는 제공된 입력/출력 코드가 들어 있으며 수정할 수 없습니다.

직접 해보기

// 제공된 입력/출력 코드: 그대로 유지하세요
var input: [String] = []
while let line = readLine() { input.append(line) }
let scheduler = Scheduler()
for line in input {
    let p = line.split(separator: ",").map(String.init)
    print(scheduler.add(Event(title: p[0], day: Int(p[1])!, start: Int(p[2])!, end: Int(p[3])!)))
}
for e in scheduler.agenda() { print(e) }
print(scheduler.busiestDay())

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드