๐ ๏ธ ๋ฌธ์ ๐ ๏ธ
- ๋น์ ์ ์ผ๋ ฌ๋ก ๋์ด๋ n๊ฐ์ ์ง์ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌํ๋ ค ํฉ๋๋ค.
โ deliveries ์ ๊ธธ์ด = pickups์ ๊ธธ์ด = n - ๋ฐฐ๋ฌํ ๋ฌผ๊ฑด์ ๋ชจ๋ ํฌ๊ธฐ๊ฐ ๊ฐ์ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๋ด์ ๋ฐฐ๋ฌํ๋ฉฐ, ๋ฐฐ๋ฌ์ ๋ค๋๋ฉด์ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์๊ฑฐํ๋ ค ํฉ๋๋ค.
- ๋ฐฐ๋ฌํ ํ๋ฐฐ๋ค์ ๋ชจ๋ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๋ด๊ฒจ์ ๋ฌผ๋ฅ์ฐฝ๊ณ ์ ๋ณด๊ด๋์ด ์๊ณ , i๋ฒ์งธ ์ง์ ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ๊ฑฐ๋ฆฌ i๋งํผ ๋จ์ด์ ธ ์์ต๋๋ค. ๋ํ i๋ฒ์งธ ์ง์ j๋ฒ์งธ ์ง๊ณผ ๊ฑฐ๋ฆฌ j - i๋งํผ ๋จ์ด์ ธ ์์ต๋๋ค. (1 โค i โค j โค n)
- ํธ๋ญ์๋ ์ฌํ์ฉ ํ๋ฐฐ ์์๋ฅผ ์ต๋ cap๊ฐ ์ค์ ์ ์์ต๋๋ค.
- ํธ๋ญ์ ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์ค์ด ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ์ถ๋ฐํด ๊ฐ ์ง์ ๋ฐฐ๋ฌํ๋ฉด์, ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์๊ฑฐํด ๋ฌผ๋ฅ์ฐฝ๊ณ ์ ๋ด๋ฆฝ๋๋ค.
โ ๋ฐฐ๋ฌํ๊ฑฐ๋ ์๊ฑฐํ ๊ฐ์ฅ ๋จผ ์ง i โ ๋ฌผ๋ฅ์ฐฝ๊ณ ์ i๋ฅผ ์๋ณตํด์ผํ๋ค. - ๊ฐ ์ง๋ง๋ค ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์์ ์๊ฑฐํ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ์๊ณ ์์ ๋, ํธ๋ญ ํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋ฌผ๋ฅ์ฐฝ๊ณ ๊น์ง ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
โ ๊ฐ์ฅ ๋จผ ๊ณณ์ ์์ ์ ๋จผ์ ์๋ฃํด์ผํ๋ค. - ๊ฐ ์ง์ ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํ ๋, ์ํ๋ ๊ฐ์๋งํผ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํ ์ ์์ต๋๋ค.
โ ํ ์ง์ ์ฌ๋ฌ๋ฒ ๋ฐฉ๋ฌธํ ์ ์๋ค.
๐๏ธ ์ค๋ช ๐๏ธ
์ฒ์ ์ด ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ๊ฐ์ฅ ๋จผ์ ๋ ์ฌ๋ฆฐ ๋ฐฉ๋ฒ์ ํ์ฌ ๋จ์์๋ ์์ ์ค ๊ฐ์ฅ ๋จผ ์ง์ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ฉฐ ๋ฐฐ์ด์ ๋ณ๊ฒฝํด ๋์๊ฐ๋ ๊ฒ์ด์๋ค.
ํ์ง๋ง ๋ฐ๋ณต๋ฌธ ์ ๋ฐ๋ณต๋ฌธ์ด ๊ณ์ ์๊ฒจ ์๊ฐ๋ณต์ก๋๋ ์ปค์ง๊ณ ๊ตฌํํ ์๋ก ๊ฒฝ์ฐ์ ์๊ฐ ๋์ด๋์ ๊ตฌํํ๊ธฐ ์ด๋ ค์ ๋ค.
๊ทธ๋์ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ์กฐ๊ธ ์ฐธ๊ณ ํ๋๋ฐ ์ ๋ง ๊ฐ๋จํ๊ณ ์๊ฐ์ ์ข ์ ํํ๋ ๊ณ๊ธฐ๊ฐ ๋์ด ๊ธฐ๋ก์ ๋จ๊ฒจ๋๋ค.
์ฐ์ ๋๋ ํ๋ฒ ์๋ณตํ ๋์ ์ํ๋ฅผ ๋ฐฐ์ด์ ๋ฌด์กฐ๊ฑด ๋ณ๊ฒฝ์ ํ๋ ค๊ณ ํ๋ค.
ํ์ง๋ง ๋ฌธ์ ๋ฅผ ์ข ๋ ์๊ฐํด๋ณด๋ฉด
- ๋ฐฐ๋ฌํด์ผํ ํ๋ฐฐ์ ์๊ฑฐํด์ผํ ํ๋ฐฐ์ ๊ฐ์๋ ์ ํด์ ธ ์๋ค.
- ํ๋ฒ ๋ฐฐ๋ฌํ๋ฌ ๊ฐ ํ ๋์์ฌ ๋ ํธ๋ญ์ ์ฉ๋์ ๋ค์ ์์ ์ผ๋ก ๋์๊ฐ๋ค.
์ฆ, ํ์ํ๋ฌ ์ถ๋ฐํ ๋ ํธ๋ญ์ ๋น์ด์๋ค.
- ํธ๋ญ์ด ๋ชจ๋ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌํ๋ฌ ๊ฐ๋ ๋์ ์ต๋๋ก ์ค์ ์ ์๋ ์์ cap x (์ถ๋ฐํ ํ์)
๋ฐ๋๋ก ๋ฌผ๋ฅ์ฐฝ๊ณ ๋ก ๋ชจ๋ ํ์ํ๋ ๋์ ์ต๋๋ก ์ค์ ์ ์๋ ์ ๋ํ cap x (๋์ฐฉํ ํ์) ์ด๋ค.
๋ด๊ฐ ์ดํดํ ๋ด์ฉ์ ํ ๋๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ณด๋ฉด ์๋์ ๊ฐ๋ค.

์ฆ, ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ค๋ฉด ์๋ณตํ์๋ฅผ ์ค์ฌ์ผํ๋ค.
์๋ณต ํ์๋ฅผ ์ค์ด๋ ค๋ฉด ํธ๋ญ ์ฉ๋์ ๊ฝ ์ฑ์์ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌํ๊ณ ์๊ฑฐํด์ผํ๋ค.
๋ฌผ๋ฅ์ฐฝ๊ณ ๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ ์ง์ ์์ ์ฒ๋ฆฌ๋ฅผ ์ฐ์ ์ผ๋ก ํ๋ ๊ฐ๋ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ ์์ ์ด ์์ ๊ฒ์ด๋ค.
์์ ๊ทธ๋ฆผ์์ ๋ณด๋ฉด 5๋ฒ ์ง์ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ๋ฒ ์๋ณตํ๋ฉด ๊ฐ๋ ๋์ 2๊ฐ, ์ค๋ ๋์ 4๊ฐ์ ์์๋ฅผ ๋ ์ฒ๋ฆฌํ ์ ์์ด 4๋ฒ ์ง ์์ ์ ๊ฐ์ด ์ฒ๋ฆฌํ๊ณ 3๋ฒ ์ง์ ๋ฐฐ๋ฌ 1๊ฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
โ ์ด๋ ๊ฒ ํ๋ฉด 5๋ฒ ์ง์ ์๋ณตํ๋๋ฐ ์ต๋๋ก ํด๊ฒฐํ ์ ์๋ ์์ ์ ์ฒ๋ฆฌํ๋ค.
์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ต์ ์ด๋๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค.
๋ด๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋๋ ๊ฒ์ ํ์ฌ ๋๋ ๋ฌธ์ ๋ฅผ ๋๋ฌด ์๋ ๊ทธ๋๋ก๋ง ์๊ฐํ๋ค.
๋ฌธ์ ์์ ๋ํ๋ด๋ ๋ฌธ์ฅ์ด ์๋ฏธํ๋ ๊ฒ๊น์ง ์๊ฐ์ ๋ชปํ๊ณ ์์๋ค.
๊ทธ๋์ ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ทธ ๋ฌธ์ฅ์ด ์ด๋ค ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง, ๊ทธ ์๋ฏธ๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์ข ๋ ๋จ์ํ๊ฒ ํ์ด๋ณธ ์๊ฐ์ด์๋ค.
์์ผ๋ก ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ๋ ๊ฒ๋ ์ค์ํ์ง๋ง ๊ทธ ์๋ฏธ๋ฅผ ํ์ ํ๋ ์๊ฐ์ ๊ฐ์ง๋๋ก ํด์ผ๊ฒ ๋ค.
๐ ํ์ด ๐
/**
* ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ
* https://school.programmers.co.kr/learn/courses/30/lessons/150369
*/
public class Parcel {
public static void main(String[] args) {
int cap = 4;
int n = 5;
int[] deliveries = {1, 0, 3, 1, 2};
int[] pickups = {0, 3, 0, 4, 0};
System.out.println(solution(cap, n, deliveries, pickups));
}
/**
* ํธ๋ญ ํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋ฌผ๋ฅ์ฐฝ๊ณ ๊น์ง ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ
* @param cap ํธ๋ญ ์ฉ๋
* @param n ๋ฐฐ๋ฌํ ์ง์ ๊ฐ์
* @param deliveries ๊ฐ ์ง์ ๋ฐฐ๋ฌํ ํ๋ฐฐ ์์์ ๊ฐ์
* @param pickups ๊ฐ ์ง์์ ์๊ฑฐํ ์์ ๊ฐ์
* @return ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ
*/
public static long solution(int cap, int n, int[] deliveries, int[] pickups) {
long answer = 0;
int d = 0; // ๊ฐ๋ ๋์ ๋ฐฐ๋ฌํ ์ ์๋ ํ๋ฐฐ ์ฉ๋
int p = 0; // ์ค๋ ๋์ ์๊ฑฐํ ์ ์๋ ํ๋ฐฐ ์ฉ๋
for(int i = n-1; i >= 0; i--) { //๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ๊ฐ์ฅ ๋จผ ๊ณณ์ ์์
๋ถํฐ ์ฒ๋ฆฌ!
//ํ์ฌ ํ๋ฐฐ๋ฅผ ํธ๋ญ์ ๋ด๋๋ค.
d -= deliveries[i];
p -= pickups[i];
// ๊ฐ๊ฑฐ๋ ์ค๋ ์ฐจ๋์ ์ฉ๋์ด ๋ถ์กฑํ ๊ฒฝ์ฐ
while(d < 0 || p < 0) {
// ์ด๋ํ๋ ๋์ ์ฎ๊ธธ ์ ์๋ ์ฉ๋ ์ถ๊ฐ
d += cap;
p += cap;
answer += (i+1) * 2; // ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ (i+1)๋ฒ์งธ ์ง๊น์ง ์ด๋๊ฑฐ๋ฆฌ
}
}
return answer;
}
}