Programmers: ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ
54:45
ํธ๋ ๋ฐ ์ ๋ง ์ค๋๊ฑธ๋ ธ๋ค. ์ฌ์ค ์ด ๋ฌธ์ ๋ ์์ ์๋ ๋ช ๋ฒ ์๋ํ๋ค๊ฐ ์คํจํ๋๋ฐ ์ด๋ฒ์๋ ์ฑ๊ณต!
- ์ผ๋จ, ์ฒ์์๋ ๋๊ธฐ ํธ๋ญ ๋ชฉ๋ก์ด ๋น์ด์๊ณ , ํ(๋ค๋ฆฌ)๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๊ฒ ํ๋๋ฐ ์ด์ ๋ ๋ชฐ๋ผ๋ ๋์ํ์ง ์์์ ๋์ฐฉํ ํธ๋ญ์ ์๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์จ ๋๊ธฐ ํธ๋ญ ์์ ๊ฐ์ ๋๊น์ง ๋ฐ๋ณตํ๊ธฐ๋ก ํ๋ค.
- ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๊ณ ์๋ ํธ๋ญ์ด ์๋์ง ํ์ธํ๋ค. ์ด์ฐจํผ 1์ด์ ํ ๋์ฉ๋ฐ์ ๋ชป ์์ง์ด๋ ๊ฐ์ฅ ์ฒซ ํธ๋ญ๋ง ํ์ธํ๋ฉด ๋๋ค.
- ๋ค๋ฆฌ์ ์๋ ํธ๋ญ์ ๋ฌด๊ฒ์ ๋๊ธฐ ํธ๋ญ์ ๋งจ ์์ ์๋ ํธ๋ญ์ ๋ฌด๊ฒ๋ฅผ ํฉํ์ ๋, ์ด๊ณผํ์ง ์์ผ๋ฉด
queue
์ ๋ฃ์ด์ค๋ค. ์ด ๋, ํ์ฌ ์๊ฐ์ ๊ฐ์ด ๋ฃ์ด์2
์์ ์๊ฐ์ ํ์ธํ ๋ ์ด๋ค.
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/42583
https://www.acmicpc.net/problem/13335
๋ด๊ฐ ์์ฑํ ์ฝ๋
Swift
import Foundation
func solution(_ bridge_length:Int, _ weight:Int, _ truck_weights:[Int]) -> Int {
var waits = truck_weights // ๋๊ธฐ ํธ๋ญ
var queue = [[Int]]() // ๋ค๋ฆฌ๋ฅผ ๊ฑด๋๋ ํธ๋ญ
var finished = [[Int]]() // ๋ค๋ฆฌ๋ฅผ ์ง๋ ํธ๋ญ
var time = 0 // ๊ฒฝ๊ณผ ์๊ฐ
while finished.count != truck_weights.count { // ๋์ฐฉ ํธ๋ญ ๋ชฉ๋ก ์๊ฐ ์
๋ ฅ์ผ๋ก ๋ค์ด์จ ๋๊ธฐ ํธ๋ญ ์์ ๊ฐ์ ๋๊น์ง ๋ฐ๋ณต
// finished <--- queue
if !queue.isEmpty && time - queue[0][1] == bridge_length {
finished.append(queue.removeFirst())
}
// queue <--- waits
if let first = waits.first {
if queue.map({ $0[0] }).reduce(0, +) + first <= weight {
queue.append([waits.removeFirst(), time])
}
}
time += 1
}
return time
}
๋ฐ์ํ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote