์๋ ํ์ธ์ ์ ์ธ์ ๋๋ค :)
์์ฆ PS๋ฅผ ์ฐ์ตํ๋ฉฐ ์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ ๋ฅ๋ ฅ์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๊ณ ์๋๋ฐ์,,,
์ฐจ๊ทผ์ฐจ๊ทผ ๊ธฐ๋ก๋ ํด๊ฐ๋ฉฐ ์ค๋ ฅ์ ๋์ฌ๊ฐ์ผ๊ฒ ์ต๋๋ค..!!
Greedy ์ ํ์ธ 2023 KAKAO BLIND RECRUITMENT - ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ ๋ฌธ์ ํ์ด๋ฅผ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค๐
๋ฌธ์ ๋งํฌ
๋ฌธ์ ํ์ด
์ฒ์ ์ ๊ทผ
์ผ๋จ ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๊ทธ๋ฆฌ๋๋ก ํ์ด์ผ๊ฒ ๋ค๋ ์์ด๋์ด๋ ๋ ์ฌ๋๋๋ฐ, ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ์ง ๋ชปํด ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ๋ฐ ์กฐ๊ฑด์ ํ๋จํด์ฃผ๊ธฐ๊ฐ ๊น๋ค๋กญ๋ค๊ณ ๋๊ผ์ต๋๋ค๐ฅฒ (ํ๋ฐฐ ์๊ฑฐ ์ ๋ฐฐ์ด์ ์์๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ ๋ ๋ค์ ๋ฐฉ๋ฌธํด์ผ ํ ์ง์ ํ์ธํ๋ ์์ผ๋ก ํ์๊ฑฐ๋ ์ฌ..)
๊ทธ๋ฆฌ๋ + ์คํ์ ํ์ฉํ ํ์ด
์ต์ข ์ ์ผ๋ก ๊ตฌํด์ผ ํ๋ ๊ฐ์ ํธ๋ญ ํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋ฌผ๋ฅ์ฐฝ๊ณ ๊น์ง ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฆฌ๋ ์ ๋ต์ผ๋ก ๋งค ์๊ฐ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด ์ต์ข ์ ์ธ ๊ฐ๊น์ง ๊ตฌํ๋ฉด ๋ฉ๋๋ค.
์ด ๋, ๋ฌธ์ ์์ ์ ์๋ ์กฐ๊ฑด์ ํ์ธํด๋ณด๋ฉด ํ ์ฌ์ดํด์ ์๋ณต ํ ๋ฒ์ผ๋ก ์ก์์ผ ํ๋ค๋ ๊ฒ์ ํ์ ํ ์ ์์ต๋๋ค. (์ฐฝ๊ณ ์์ ์ถ๋ฐํด ๋์์์ผํ๊ธฐ ๋๋ฌธ)
ํ ์ฌ์ดํด ๋์ ์ต๋๋ก ๋ฐฐ๋ฌ, ์ต๋๋ก ์๊ฑฐ(cap ๋งํผ)๋ฅผ ํ๋ฉด ํ ์ฌ์ดํด์ ์ต์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๊ณ , ์ฌ์ดํด ๋ฐ๋ณต ํ์๋ฅผ ์ต๋๋ก ์ค์ด๋ ๋ฐฉ์์ผ๋ก ์ต์ข ์ ์ธ ๊ฐ์ ๊ตฌํ ์ ์์ต๋๋ค.
์ ๋ฆฌํด๋ณด์๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ํธ๋ญ์ ์์ง์ด๋ฉด ๋ฉ๋๋ค.
1. ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํ ํ๋ฐฐ ์์๊ฐ ๋จ์ ๊ฐ์ฅ ๋จผ ์ง๋ถํฐ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํฉ๋๋ค.
2. ํธ๋ญ์ด ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ์ถ๋ฐํด ๊ฐ์ฅ ๋จผ ์ง์ผ๋ก ์ด๋ํ ๋๋ ๋ฐฐ๋ฌ๋ง ํ๊ณ , ๋ค์ ๋ฌผ๋ฅ์ฐฝ๊ณ ๋ก ๋์์ฌ ๋๋ ์๊ฑฐ๋ง ํฉ๋๋ค.
3. ํธ๋ญ์ด ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ์ถ๋ฐํ ๋ ํญ์ ํ๋ฐฐ๋ฅผ ์ต๋ ๊ฐ์(cap)๋งํผ ๋ฐฐ๋ฌํ๊ณ , ๋ฌผ๋ฅ์ฐฝ๊ณ ๋ก ๋์๊ฐ ๋ ์ต๋ ๊ฐ์(cap)๋งํผ ์๊ฑฐํฉ๋๋ค.
ํญ์ ์ฐฝ๊ณ ์์ ๊ฐ์ฅ ๋จผ ์ง๋ถํฐ ๋ฐฐ๋ฌํ๊ณ , ์๊ฑฐํ๊ธฐ ๋๋ฌธ์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ ์๋ฃ๋ ์ง์ popํ๋ ๋ฐฉ์ญ์ผ๋ก ๋ฐฐ๋ฌ or ์๊ฑฐ ์๋ฃ ์ฌ๋ถ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์์ต๋๋ค. (๋ฐฐ๋ฌ ์คํ, ์๊ฑฐ ์คํ ํ๋์ฉ ์ด ๋ ๊ฐ์ ์คํ ์ด์ฉ)
์ด๋ฌํ ์์ด๋์ด๋ฅผ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Swift ํ์ด ์ฝ๋
import Foundation
func solution(_ cap:Int, _ n:Int, _ deliveries:[Int], _ pickups:[Int]) -> Int64 {
var deliveries = deliveries
var pickups = pickups
var result = 0
while !deliveries.isEmpty || !pickups.isEmpty {
deliveries.trimZeroSuffix()
pickups.trimZeroSuffix()
result += max(deliveries.count, pickups.count) * 2 // ์ด๋๊ฑฐ๋ฆฌ๋ ํญ์ ๊ฐ์ฅ ๋จผ๊ฑฐ๋ฆฌ์ 2๋ฐฐ
var load = cap // ํธ๋ญ์ ์ค๋ฆฐ ์์
while !deliveries.isEmpty {
if deliveries.last! > load {
deliveries[deliveries.count-1] -= load
break
} else {
load -= deliveries[deliveries.count-1]
deliveries.removeLast()
}
}
load = cap // ์๊ฑฐํ ์ ์๋ ํ๋ฐฐ ๊ฐ์ ์ต๋๋ก ์ฑ์์ค
while !pickups.isEmpty {
if pickups.last! > load {
pickups[pickups.count-1] -= load
break
} else {
load -= pickups[pickups.count-1]
pickups.removeLast()
}
}
}
return Int64(result)
}
extension Array where Element == Int {
mutating func trimZeroSuffix() {
while self.last ?? -1 == 0 {
let _ = self.removeLast()
}
}
}
[์ฐธ๊ณ ์๋ฃ]
'๐ฅ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Swift] BOJ(๊ณจ๋4) - 2573 ๋น์ฐ (2) | 2023.12.26 |
---|---|
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ํ ํธ์ง (0) | 2023.08.15 |
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ (0) | 2023.08.14 |
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ์คํฐ์ปค ๋ชจ์ผ๊ธฐ(2) (3) | 2023.05.01 |
[Algorithm/Swift] ํ๋ก๊ทธ๋๋จธ์ค(Lv.3) - ์ ๊ตญ์ฌ์ฌ (2) | 2023.04.05 |