[BOJ] 2217. ๋กœํ”„ (๐Ÿฅˆ, ๊ทธ๋ฆฌ๋””)

lemythe423ยท2023๋…„ 11์›” 29์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
76/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

๋กœํ”„๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ๋“ค์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ค‘๋Ÿ‰์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ชจ๋“  ๋กœํ”„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ  ๋กœํ”„๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋“ค์–ด์˜ฌ๋ฆด ๋•Œ๋Š” ๊ฐ ๋กœํ”„์— ์ค‘๋Ÿ‰(w)์„ ๋“ค์–ด์˜ฌ๋ฆฌ๋Š” ๋กœํ”„์˜ ๊ฐœ์ˆ˜(k)๋กœ ๋‚˜๋ˆˆ ๋งŒํผ ๋ฌด๊ฒŒ๊ฐ€ ๊ฐ€ํ•ด์ง€๊ฒŒ ๋œ๋‹ค.

์ค‘๋Ÿ‰์ด ๋†’์•„์งˆ์ˆ˜๋ก ๊ฐ ๋กœํ”„์— ๊ฐ€ํ•ด์ง€๋Š” ๋ฌด๊ฒŒ๋„ ๋†’์•„์ง€๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌด๊ฒŒ๋“ค์„ ๋ฒ„ํ‹ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ์ค‘๋Ÿ‰์˜ ๋ฌด๊ฒŒ๊ฐ€ ๋ฌด๊ฑฐ์šด ๋กœํ”„๋“ค ์œ„์ฃผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒŒ ์œ ๋ฆฌํ•˜๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋กœํ”„๊ฐ€ ์žˆ์„ ๋•Œ ๋“ค์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ค‘๋Ÿ‰์˜ ๋ฌด๊ฒŒ๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ์—ฌ๋Ÿฌ ๊ฐœ ๋กœํ”„ ๊ฐ€์šด๋ฐ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ์ค‘๋Ÿ‰์ด ์ตœ์†Œ์ธ ๋กœํ”„๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๊ฐ ๋กœํ”„์— ๊ฐ€ํ•ด์ง€๋Š” ์ค‘๋Ÿ‰์ด w/k์ด๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋Ÿ‰์ด ์ตœ์†Œ์ธ ๋กœํ”„๋งŒ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ๋กœํ”„๋“ค๋„ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ตœ์†Œ ๋กœํ”„์˜ ์ค‘๋Ÿ‰์„ ์ฐพ์•„ ๋กœํ”„์˜ ๊ฐœ์ˆ˜(k)๋งŒํผ ๊ณฑํ•˜๊ฒŒ ๋˜๋ฉด ์ „์ฒด ๋กœํ”„๋“ค์ด ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ์ค‘๋Ÿ‰์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๊ตญ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋ฒ„ํ‹ธ ์ˆ˜ ์žˆ๋Š” ์ค‘๋Ÿ‰์˜ ๋ฌด๊ฒŒ๊ฐ€ ๋†’์€ ๋กœํ”„๋“ค๋ถ€ํ„ฐ ๋‚ฎ์€ ๋กœํ”„๋“ค ์ˆœ์„œ๋Œ€๋กœ ๋‹ค ํ•ฉ์ณ์„œ ๋“ค์—ˆ์„ ๋•Œ ์ตœ๋Œ€๋กœ ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌด๊ฒŒ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ•œ ๋กœํ”„์˜ ๊ฐœ์ˆ˜๋Š” i ์ด๊ณ  ์ตœ์†Œ ์ค‘๋Ÿ‰ ๋กœํ”„๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋˜์–ด์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ ๋กœํ”„์˜ ์ค‘๋Ÿ‰ rope[i]์ด ๋œ๋‹ค.

์ž๋ฐ” ๋ฌธ๋ฒ•

Arrays.stream(rope).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();

int[] ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ. Interger[] ๋กœ ๋ฐ•์‹ฑํ•œ ํ›„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ๋‹ค์‹œ int[] ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜.

// ๋กœํ”„

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        
        int[] rope = new int[N];
        for (int i = 0; i < rope.length; i++) {
            rope[i] = Integer.parseInt(br.readLine());
        }

        rope = Arrays.stream(rope).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();
        
        int max_weight = 0;
        for (int i = 0; i < rope.length; i++) {
            int tmp = rope[i] * (i+1);
            if (max_weight < tmp) {
                max_weight = tmp;
            }
        }
        System.out.println(max_weight);
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€