๋ฐฑ์ค - ๊ธฐ์ฐจ๊ฐ ์ด๋ ์ ํค์น๊ณ ์ํ์๋ฅผ(Swift)
2022. 12. 2. 10:19ใAlgorithm
๋ฐฑ์ค - ๊ธฐ์ฐจ๊ฐ ์ด๋ ์ ํค์น๊ณ ์ํ์๋ฅผ(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/15787
๋์ ํ์ด
์ ๋ ฅ์ผ๋ก 100,000์ด ๋ค์ด์ค์ง๋ง ๊ธฐ์ฐจ์์ ์ข์์ ํ ์นธ์ฉ ๋น๊ธฐ๊ฑฐ๋ ๋ฏธ๋ ์ ๋์ ํ์๋ง ํ๊ธฐ ๋๋ฌธ์ O(n)์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฌธ์ ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๊ตฌ์ฌํญ๋๋ก ๊ตฌํ๋ง ์ ํด์ฃผ๋ฉด ๋ฌธ์ ๋ ์ฝ๊ฒ ํ๋ฆฐ๋ค.
import Foundation
struct Train: Hashable {
var seats: [Int]
}
var trains = [Train]()
var availThrough = Set<Train>()
let nm = readLine()!.components(separatedBy:" ").map{Int($0)!}
let N = nm[0], M = nm[1]
for _ in 0..<N {
trains.append(Train(seats: Array(repeating:0, count: 20)))
}
for _ in 0..<M {
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
let type = input[0]
switch type {
case 1: // i๋ฒ์งธ ๊ธฐ์ฐจ์ x๋ฒ ์ข์์ ํ์
trains[input[1]-1].seats[input[2]-1] = 1
case 2: // i๋ฒ์งธ ๊ธฐ์ฐจ์ x๋ฒ ์ข์ ๋น์
trains[input[1]-1].seats[input[2]-1] = 0
case 3: // ๋ชจ๋ ์ข์ ํ ์นธ์ฉ ๋ค๋ก
trains[input[1]-1].seats.removeLast()
trains[input[1]-1].seats.insert(0, at:0)
case 4: // ๋ชจ๋ ์ข์ ํ ์นธ์ฉ ์์ผ๋ก
trains[input[1]-1].seats.removeFirst()
trains[input[1]-1].seats.append(0)
default: break
}
}
for train in trains {
availThrough.insert(train)
}
print(availThrough.count)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ์์ด ์ฌ์ดํด(Swift) (0) | 2022.12.03 |
---|---|
๋ฐฑ์ค - ์๊ธฐ ์์ด(Swift) (0) | 2022.11.30 |
๋ฐฑ์ค - ๊ฐ์(Swift) (0) | 2022.11.29 |
๋ฐฑ์ค - ๋๋๊ณค ์ปค๋ธ(Swift) (0) | 2022.11.28 |
๋ฐฑ์ค - ๋ฏธ์ธ๋จผ์ง ์๋ !(Swift) (0) | 2022.11.23 |