-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
💬 문제
https://www.acmicpc.net/problem/20006
💬 Idea
- roomArr를 돌면서 만약 입장할 수 있는 방이 있다면 방이 시작한 순서대로 입장시키기 위해 방을 배열에 저장한다.
- 입장할 수 있는 방이 있다면 입장시킨 후 반복문을 break하고,
- 입장할 수 있는 방이 없다면 새로운 방을 생성한다.
💬 풀이
func solution200006() {
let pm = readLine()!.split(separator: " ").map({ Int(String($0))! })
var roomArr: [(Int, Int)] = []
var roomInfo: [Int: [(Int, String)]] = [:]
for _ in 0..<pm[0] {
let p = readLine()!.split(separator: " ").map({ String($0) })
let level = Int(p[0])!
let id = p[1]
var room = -1
for (idx, r) in roomArr.enumerated() {
if level >= r.0 && level <= r.1 && roomInfo[idx]!.count < pm[1] {
room = idx
roomInfo[idx]!.append((level, id))
break
}
}
if room == -1 {
// 새로운 방 생성
roomArr.append((level - 10, level + 10))
roomInfo[roomArr.count - 1] = [(level, id)]
}
}
for (idx, _) in roomArr.enumerated() {
if roomInfo[idx]!.count == pm[1] {
print("Started!")
} else {
print("Waiting!")
}
for j in roomInfo[idx]!.sorted(by: { $0.1 < $1.1 }) {
print("\(j.0) \(j.1)")
}
}
}
소요시간
: 29분