2022. 11. 11. 16:36ใAlgorithm
๋ฌธ์ ์ด๋ฆ
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/20006
๋์ ํ์ด
๋จ์ํ ๊ตฌํ๋ฌธ์ ์์ง๋ง ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค.
๋ ๊ตฌํ๋ฌธ์ ์ ๋ง์ด ์ฝํ ๊ฒ ๊ฐ์ ๋๋์ด ๋ ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ ์์ธ์ ๋ ๊ฐ์ง์ด๋ค.
1. ๋ฌธ์ ์ดํด -> ๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ ์ฝ๊ณ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ์์ํด์ผํ๋๋ฐ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ๋ง ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ์ดํดํ๋ ค๊ณ ํ๋ค. ๋ฌธ์ ์์ฒด์์ ์ ๋ ฅ๊ฐ๊ณผ ์ถ๋ ฅ๊ฐ์ ์ดํดํ๊ฒ ํ๋ ค๊ณ ๋ ธ๋ ฅํ๋๊น ๋ฌธ์ ๋ฅผ ์ ์ฝ์
2. ์๋ฃ๊ตฌ์กฐ ์ด์ฉ -> ์ฒ์์๋ rooms๋ณ์๋ฅผ [๋ฐฉ๋ฒํธ: [ํ๋ ์ด์ด]]ํ์์ผ๋ก ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ๋ฐฉ์ด ๋ค์ด์จ ์์๋๋ก๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ ๋ ์ด๋ ค์์ด ์์ด Room์ด๋ผ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฐ๋ก ๋ง๋ค์๋ค. ์ฒ์ ํ ๋ฐฉ์์ ๋์ ๋๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ด์จ ์์๋๋ก ์ ๋ ฌ์ด ๋์ด์์ง ์๋ค. ๊ทธ๋ ๊ธฐ์ Room๊ตฌ์กฐ์ฒด๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํด์ผํ๋ค๋ ๊ฒ ํฌ์ธํธ์๋ ๊ฒ ๊ฐ๋ค.
import Foundation
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
let N = input[0], M = input[1] // ํ๋ ์ด์ด์ ์, ๋ฐฉ์ ์ ํ
struct Player {
let level: Int
let name: String
}
struct Room {
let roomRange: Int // ๋ฐฉ์ ์
์ฅ๊ฐ๋ฅ ๋ ๋ฒจ๋ฒ์
var roomList: [Player] //๋ฐฉ์ ๋ค์ด๊ฐ ํ๋ ์ด์ด๋ค
let roomId: Int // ๋ฐฉ ์์ฑ์์ผ๋ก
}
// ๋ฐฉ์ ์ํ
var rooms = [Room]()
var idx = 0 // ๋ฐฉ์ ์์
for i in 0..<N {
let input = readLine()!.components(separatedBy:" ")
let p1 = Player(level: Int(input[0])!, name: input[1])
// ๋ ๋ฒจ๋ฒ์์ ๋ง๊ณ ๋ฐฉ์ ์์ฉ์น๊ฐ ๊ฝ์ฐจ์ง ์๊ณ ์์ฑ๋ ๋ ์ง๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ์์ผ๋ก
let tempRoom = rooms.filter{ $0.roomRange-10 <= p1.level && $0.roomRange+10 >= p1.level }
.filter{ $0.roomList.count < M }
.sorted(by: { $0.roomId < $1.roomId })
if tempRoom.isEmpty {
idx += 1
rooms.append(Room(roomRange: p1.level, roomList: [p1], roomId: idx))
} else { // ๋ฐฉ์ด ๋น์ด์์ง ์๋ค๋ฉด
let foundIdx = rooms.firstIndex(where: {$0.roomId == tempRoom[0].roomId})!
rooms[foundIdx].roomList.append(p1)
}
}
for x in rooms {
if x.roomList.count == M {
print("Started!")
} else {
print("Waiting!")
}
let temp = x.roomList.sorted(by: {$0.name < $1.name })
temp.forEach { print("\($0.level) \($0.name)")}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๋ก๋ด ์ฒญ์๊ธฐ(Swift) (0) | 2022.11.14 |
---|---|
๋ฐฑ์ค - ํ ์ค๋ก ์๊ธฐ(Swift) (0) | 2022.11.11 |
๋ฐฑ์ค - NBA๋๊ตฌ(Swift) (0) | 2022.11.10 |
๋ฐฑ์ค - ์ค์์น ์ผ๊ณ ๋๊ธฐ(Swift) (0) | 2022.11.10 |
๋ฐฑ์ค - ๊ธฐ์์บ์คํฐ(Swift) (0) | 2022.11.10 |