2022. 11. 14. 15:40ใAlgorithm
๋ฐฑ์ค - ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์ ๋ก๋ด(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/20055
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ๊ฒ ์ฝ์ง ๋ชปํด์ ์๊ฐ์ด ์ค๋๊ฑธ๋ ธ๋ค.
๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๋ ๋์ฒ๋ผ ๋ฌธ์ ์ดํด์ ์๊ฐ์ ๋ง์ด ์ด ์ฌ๋๋ค์ด ๋ง์ ๊ฒ ๊ฐ๋ค.
์ปจ๋ฒ ์ด์ด ๋ฒจํธ๊ฐ ํ์ ํ๋ฉด์ N์์ ๋ก๋ด์ ๋ด๋ฆฌ๋ ๊ฑด๋ฐ, ์๋์ชฝ์์๋ ๋ก๋ด์ด ์๋ ์ค ์๊ณ ์ด๋ฅผ ๊ณ ๋ คํด์ ๋ฌธ์ ๋ฅผ ํ์์๋ค.
๊ทธ๋ฆฌ๊ณ ๋ก๋ด์ด ์ปจ๋ฒ ์ด์ด๋ฒจํธ์ ํจ๊ป ํ์ ์ ํ ๋๋ ๋ด๊ตฌ๋๊ฐ ๊ฐ์ํ์ง ์๋๋ค. ๋ฌธ์ ์์ ๋ก๋ด์ด "์ด๋"ํ ๋๋ง ๋ด๊ตฌ๋๊ฐ ๊ฐ์ํ๋ค๊ณ ์ ํ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ง๋ง์ผ๋ก ๋จ๊ณ๋ 4๊ฐ์ง ๊ณผ์ ์ค ์ฒซ๋ฒ์งธ ๊ณผ์ ์ ์์ํจ๊ณผ ๋์์ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ result๋ณ์๋ฅผ ์ฒ์์ ์ฆ๊ฐ์ํค๊ฒ ํ๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ฉ์์ผฐ๋๋ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋์์ ๋ค์ํ๋ฒ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ ์ฒซ ๋ฒ์งธ ๊ณผ์ ์ธ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ํ์ ์์ผฐ์๋ N์ ํด๋นํ๋ ์นธ์ ๋ก๋ด์ ๋ฐ๋ก ๋ด๋ ค์ค์ผ ํ๋๋ฐ ๋ด๋ ค์ฃผ์ง ์์ ๊ฒ์ด ๋ฌธ์ ๊ฐ ๋์๋ค.
import Foundation
struct Belt {
var robot: Bool // ๋ก๋ด์ด ์๋์ง
var duration: Int // ๋ด๊ตฌ๋
}
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
let N = input[0], K = input[1] // ๋ฒจํธ ์นธ ์, ๋ด๊ตฌ๋ 0์ ์์ฉ์น
let arr = readLine()!.components(separatedBy: " ").map{Int($0)!}
var belts = [Belt]()
for (i, x) in arr.enumerated() {
belts.append(Belt(robot: false, duration: x))
}
var result = 0
while true {
result += 1
// 1
belts.insert(belts.removeLast(), at: 0) // ๋งจ ๋ง์ง๋ง ๋ฒจํธ๋ฅผ ์์ผ๋ก
if belts[N-1].robot == true { belts[N-1].robot = false }
// 2
for i in stride(from: N-2, to: -1, by: -1) { // ๋ก๋ด์ ์ด๋
if belts[i].robot == true, belts[i+1].robot == false, belts[i+1].duration > 0 {
belts[i].robot = false
belts[i+1].robot = true
belts[i+1].duration -= 1
if i+1 == N-1 { belts[i+1].robot = false } // N์ธ๋ฑ์ค์ ๋ก๋ด์ด ์์นํ๋ฉด ๋ฐ๋ก ๋ด๋ ค์ค๋ค.
}
}
// 3
if belts[0].robot == false && belts[0].duration > 0 {
belts[0].duration -= 1
belts[0].robot = true
}
// 4
let zeroCount = belts.filter{$0.duration == 0}.count
if zeroCount >= K {
break
}
}
print(result)
ํผ๋๋ฐฑ
๊ตฌํ๋ฌธ์ ๋ ํญ์ ๊ทธ๋ ๋ฏ ๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ์ดํดํ๊ณ ๊ผผ๊ผผํ๊ฒ ๊ตฌํํ๋ ๊ฒ์ด ์ค์ํ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ์ ์ ๋ด๊ตฌ๋๋ฅผ ์ํ ๋ฐฐ์ด๊ณผ ๊ฐ ๋ฒจํธ๋ง๋ค id๋ฅผ ์ฃผ๋ ค๊ณ ํ๋๋ฐ ์ด์ ๊ฐ์ ๋ถ๋ถ๋ค์ ํ์๊ฐ ์์๋ค.
์์ง ๋ง์ด ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๋น๋ฐํธ์(Swift) (0) | 2022.11.15 |
---|---|
๋ฐฑ์ค - ๋น๋ฌผ(Swift) (0) | 2022.11.15 |
๋ฐฑ์ค - ๋ก๋ด ์ฒญ์๊ธฐ(Swift) (0) | 2022.11.14 |
๋ฐฑ์ค - ํ ์ค๋ก ์๊ธฐ(Swift) (0) | 2022.11.11 |
๋ฐฑ์ค - ๋ญํน์ ๋๊ธฐ์ด(Swift) (1) | 2022.11.11 |