๐ ๋ฌธ์
https://www.acmicpc.net/problem/11399
๐ ๋ฌธ์ ์์ฝ
์ธํ์ํ์๋ ATM์ด 1๋๋ฐ์ ์๋ค. ์ง๊ธ ์ด ATM์์ N๋ช ์ ์ฌ๋๋ค์ด ์ค์ ์์๋ค. ์ฌ๋์ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์์ผ๋ฉฐ, i๋ฒ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ Pi๋ถ์ด๋ค.
์ฌ๋๋ค์ด ์ค์ ์๋ ์์์ ๋ฐ๋ผ์, ๋์ ์ธ์ถํ๋๋ฐ ํ์ํ ์๊ฐ์ ํฉ์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด 5๋ช ์ด ์๊ณ , P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 ์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์. [1, 2, 3, 4, 5] ์์๋ก ์ค์ ์ ๋ค๋ฉด, 1๋ฒ ์ฌ๋์ 3๋ถ๋ง์ ๋์ ๋ฝ์ ์ ์๋ค. 2๋ฒ ์ฌ๋์ 1๋ฒ ์ฌ๋์ด ๋์ ๋ฝ์ ๋ ๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์, 3+1 = 4๋ถ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. 3๋ฒ ์ฌ๋์ 1๋ฒ, 2๋ฒ ์ฌ๋์ด ๋์ ๋ฝ์ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์, ์ด 3+1+4 = 8๋ถ์ด ํ์ํ๊ฒ ๋๋ค. 4๋ฒ ์ฌ๋์ 3+1+4+3 = 11๋ถ, 5๋ฒ ์ฌ๋์ 3+1+4+3+2 = 13๋ถ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ์ด ๊ฒฝ์ฐ์ ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ํ์ํ ์๊ฐ์ ํฉ์ 3+4+8+11+13 = 39๋ถ์ด ๋๋ค.
์ค์ [2, 5, 1, 4, 3] ์์๋ก ์ค์ ์๋ฉด, 2๋ฒ ์ฌ๋์ 1๋ถ๋ง์, 5๋ฒ ์ฌ๋์ 1+2 = 3๋ถ, 1๋ฒ ์ฌ๋์ 1+2+3 = 6๋ถ, 4๋ฒ ์ฌ๋์ 1+2+3+3 = 9๋ถ, 3๋ฒ ์ฌ๋์ 1+2+3+3+4 = 13๋ถ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค. ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ํ์ํ ์๊ฐ์ ํฉ์ 1+3+6+9+13 = 32๋ถ์ด๋ค. ์ด ๋ฐฉ๋ฒ๋ณด๋ค ๋ ํ์ํ ์๊ฐ์ ํฉ์ ์ต์๋ก ๋ง๋ค ์๋ ์๋ค.
์ค์ ์ ์๋ ์ฌ๋์ ์ N๊ณผ ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ Pi๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ํ์ํ ์๊ฐ์ ํฉ์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.์ ๋ ฅ: ์ฒซ์งธ ์ค์ ์ฌ๋์ ์ N(1 โค N โค 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ Pi๊ฐ ์ฃผ์ด์ง๋ค. (1 โค Pi โค 1,000)
์ถ๋ ฅ: ์ฒซ์งธ ์ค์ ๊ฐ ์ฌ๋์ด ๋์ ์ธ์ถํ๋๋ฐ ํ์ํ ์๊ฐ์ ํฉ์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ก ์ ๊ทผ ๋ฐฉ๋ฒ
N๋ฒ ์ฌ๋์ ์ธ์ถ ์๊ฐ์ ์ ์ฌ๋์ ์ธ์ถ์๊ฐ + ๋ณธ์ธ์ ์ธ์ถ์๊ฐ์ด๋ฏ๋ก
T(N) = T(N-1) + P(N) ์ด๋ผ๋ ์ ํ์์ ๋ง๋ค๊ณ
์ธ์ถ ์๊ฐ์ด ์ ์ผ ์งง๊ฒ ๋์ค๋ ๊ฒฝ์ฐ๋ ์ธ์ถ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ ์์ผ ์ค์ ์ธ์ฐ๋ฉด ๋๊ธฐ๋๋ฌธ์
์ ๋ ฌ ํ ๊ฐ ์๊ฐ์ ๋ํด ์ถ๋ ฅํ์๋ค.
โ ๏ธ ์ฒ์์ ํ๋ ์ค์
๐ป ์ฝ๋
#include <algorithm>
#include <iostream>
using namespace std;
int N;
int P[1001];
int main() {
cin >> N;
for (int i = 0; i < N; ++i) {
cin >> P[i];
}
sort(P, P + N);
int ans = P[0];
for (int i = 1; i < N; ++i) {
P[i] += P[i - 1];
ans += P[i];
}
cout << ans;
return 0;
}