2217๋ฒ: ๋กํ
N(1 ≤ N ≤ 100,000)๊ฐ์ ๋กํ๊ฐ ์๋ค. ์ด ๋กํ๋ฅผ ์ด์ฉํ์ฌ ์ด๋ฐ ์ ๋ฐ ๋ฌผ์ฒด๋ฅผ ๋ค์ด์ฌ๋ฆด ์ ์๋ค. ๊ฐ๊ฐ์ ๋กํ๋ ๊ทธ ๊ตต๊ธฐ๋ ๊ธธ์ด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค ์ ์๋ ๋ฌผ์ฒด์ ์ค๋์ด ์๋ก ๋ค๋ฅผ ์๋ ์๋ค. ํ
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <algorithm>
using namespace std;
bool desc(int a, int b) {
return a > b;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int N,max_n=0;
int rope[100000];
cin >> N;
for (int i = 0; i < N;i++) {
cin >> rope[i];
}
sort(rope,rope+N, desc);
for (int i = 0; i < N; i++) {
int result = rope[i] * (i + 1);
max_n = max(result, max_n);
}
cout << max_n;
return 0;
}
๐ ๋ฌธ์ ํด์ค
2217๋ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์ ๋, ์ฒ์์ ์ ์ดํด๊ฐ ๋์ง ์์๋ค
๋ฐฑ์ค ํ์ด์ ์ํ๋ฉด
'k๊ฐ์ ๋กํ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋์ด w์ธ ๋ฌผ์ฒด๋ฅผ ๋ค์ด์ฌ๋ฆด ๋, ๊ฐ๊ฐ์ ๋กํ์๋ ๋ชจ๋ ๊ณ ๋ฅด๊ฒ w/k ๋งํผ์ ์ค๋์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋ค'
๋ผ๊ณ ํ์ ๋, 10๊ณผ 15์ ๋กํ๊ฐ ์ฃผ์ด์ง๋ฉด ์ต๋ ์ค๋์ 20์ด ๋๋ค๊ณ ํ๋ค
์ด๋ ๋ง์ฝ์ 30 ์ค๋์ ๋ฌผ์ฒด๊ฐ ์ฃผ์ด์ง๋ฉด 10๊ณผ 15 ๋กํ์ ๊ฐ๊ฐ 15, 15์ฉ ์ค๋์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋๋ฐ
15๋กํ๋ 15์ ์ค๋์ ๊ฒฌ๋ ์ ์์ง๋ง, 10์ 15์ ์ค๋์ ๋ฐ์ผ๋ฉด ๊ฒฌ๋ ์ ์๊ฒ ๋๋ค
๋ฐ๋ผ์, ์ฐ๊ฒฐํ ๋กํ์ ๊ฐ์๋ 2๊ฐ์ด๊ณ ๋กํ๋ค ์ค ๊ฐ์ฅ ์์ ๊ฐ์ธ 10์ด๊ธฐ ๋๋ฌธ์
์ต๋ ์ค๋์ 10 * 2 ์ธ 20์ด ๋๊ฒ ๋๋ค
์ด๋ฅผ ๋ฐํ์ผ๋ก min(rope) * k๊ฐ ์ต๋ ์ค๋์ด ๋ ๊ฒ์์ ์ง์ํ ์ ์์๋ค
๐ฑ ์ต๋ ์ค๋ ๊ตฌํ๊ธฐ
sort(rope,rope+N, desc);
์ฐ์ 'algorithm' ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ sort ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋กํ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ฃผ์๋ค
๊ทธ๋ฌ๋ฉด ๊ฐ์ฅ ์ค๋์ด ํฐ ๋กํ๋ถํฐ ์ค๋์ด ์์ ๋กํ ์์ผ๋ก ์ ๋ ฌ์ด ๋๊ฒ ๋๋๋ฐ
for (int i = 0; i < N; i++) {
int result = rope[i] * (i + 1);
max_n = max(result, max_n);
}
๋ค์๊ณผ ๊ฐ์ด ํ์ฌ ๋กํ์ ์ค๋๊ณผ ํ์ฌ ์ฐ๊ฒฐ๋ ๋กํ์ ๊ฐ์๋ฅผ ๊ณฑํด์ค ๋ค์์ ํด๋น ์ต๋ ์ค๋์ด max์ธ์ง ๋น๊ตํ์ฌ ๋ต์ ๊ตฌํด์ฃผ๋ฉด ๊ฐ๋จํ๊ฒ ํ๋ฆฌ๋ ๋ฌธ์ ์๋ค
์๋ฅผ ๋ค์ด,
[15, 30, 10, 20, 25] ๋ผ๋ ๋กํ๊ฐ ์ฃผ์ด์ง๋ค๊ณ ๊ฐ์ ํด๋ณด์
์ด๋ฅผ ์ ๋ ฌํ๋ฉด [30, 25, 20, 15, 10]์ ์์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค
30 * 1 = 30์ผ๋ก ์ต๋ ์ค๋์ 30์ด ๋๋ค
25 * 2 = 50์ผ๋ก ์ต๋ ์ค๋์ 50์ด ๋๋ค
20 * 3 = 60์ผ๋ก ์ต๋ ์ค๋์ 60์ด ๋๋ค
15 * 4 = 60์ผ๋ก ์ต๋ ์ค๋์ ๊ทธ๋๋ก 60์ด ๋๋ค
10 * 5 = 50์ผ๋ก, ์ด์ ์ต๋ ์ค๋๋ณด๋ค ์๊ธฐ ๋๋ฌธ์ ์ต๋ ์ค๋์ ๊ทธ๋๋ก 60์ด ๋๋ค
โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ
