シャトルバス(Lv.3)
質問リンク
等級より簡単な問題
これは,時間ベースで処理量検出を行う符号化テストのよくある問題形式である.
アルゴリズムや特殊な例外を考慮する必要はありません.
答えさえすればいい質問
に答える
func solution(_ n:Int, _ t:Int, _ m:Int, _ timetable:[String]) -> String {
var timetableInfo = timetable.map { $0.components(separatedBy: ":").map { Int($0)! } }
timetableInfo.sort { $0[0] < $1[0] || ($0[0] == $1[0] && $0[1] < $1[1]) } // 먼저 온 순서로 정렬
var busTime = [9, 0] // 시, 분
var result = busTime
for index in 0..<n {
var remains = timetableInfo
var throughput = m
var lastMan = [0, 0] // 마지막에 탄 사람의 정보
for info in timetableInfo {
if throughput > 0 &&
((busTime[0] > info[0]) ||
(busTime[0] == info[0] && busTime[1] >= info[1])) { // 태울 수 있다면
throughput -= 1
lastMan = remains.removeFirst()
} else {
break
}
}
timetableInfo = remains
if throughput > 0 { // 버스 자리가 널널하다면 그냥 탄다.
result = busTime
} else { // 버스 자리 없을경우 마지막 탄 사람보다 1분 먼저 탄다.
let minute = lastMan[1] - 1
if minute >= 0 {
result[0] = lastMan[0]
result[1] = minute
} else {
result[0] = lastMan[0] - 1
result[1] = 59
}
}
let minute = busTime[1] + t
if minute >= 60 {
busTime[0] += 1
busTime[1] = minute - 60
} else {
busTime[1] = minute
}
}
return String(format: "%02d:%02d", result[0], result[1])
}
ポスト
等級より簡単な問題
これは,時間ベースで処理量検出を行う符号化テストのよくある問題形式である.
アルゴリズムや特殊な例外を考慮する必要はありません.
答えさえすればいい質問
Reference
この問題について(シャトルバス(Lv.3)), 我々は、より多くの情報をここで見つけました https://velog.io/@haze5959/프로그래머스-셔틀버스-Lv.3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol