λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜

[Java] BOJ 11399 ATM

by 🍊귀🍊 2024. 7. 23.

문제 

문제 링크 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)
  • 첫째 쀄에 κ° μ‚¬λžŒμ΄ λˆμ„ μΈμΆœν•˜λŠ”λ° ν•„μš”ν•œ μ‹œκ°„μ˜ ν•©μ˜ μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.

아이디어

  • μ‹œκ°„μ΄ 적은 μ‚¬λžŒμ΄ μ•žμ— 올 수둝 μ΅œμ’…μ μœΌλ‘œ λ”ν•œ μ‹œκ°„μ΄ μž‘μ•„μ§€λ―€λ‘œ μž…λ ₯받은 배열을 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
  • 그리고 for문을 톡해 μ‹œκ°„λ“€μ„ μˆœμ„œλŒ€λ‘œ λ”ν•˜λ©΄ λœλ‹€.

κ²ͺ은 μ‹œν–‰μ°©μ˜€

  • X

λ‚˜λ¦„ μ‰¬μ›Œμ„œ μ’‹μ•˜λ‹€ γ…Žγ…Ž

μ½”λ“œ

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

public class BOJ11399 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // μ‚¬λžŒ 수
        int N = Integer.parseInt(br.readLine());

        // μ‚¬λžŒλ“€μ˜ μ‹œκ°„μ„ μ €μž₯ν•  λ°°μ—΄
        int people[] = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());

        // μ‹œκ°„μ„ μž…λ ₯λ°›μ•„ μ €μž₯
        for(int i = 0; i < N; i++){
            int t = Integer.parseInt(st.nextToken());

            people[i] = t;
        }

        // μ‹œκ°„μ΄ μ μ„μˆ˜λ‘ λ¨Όμ €ν•˜λŠ”κ²Œ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” λ°©λ²•μ΄λ―€λ‘œ
        // μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬
        Arrays.sort(people);

        // κ²°κ³Όκ°’ μ €μž₯ν•  λ³€μˆ˜
        int result = 0;

        // μ•žμ— 값듀을 λ”ν•œ λ³€μˆ˜
        // κ³„μ†ν•΄μ„œ λ”ν•΄μ•Όν•˜λ―€λ‘œ μ €μž₯ν•΄λ†“μŒ
        int sum = 0;

        // μ •λ ¬λœ μ‹œκ°„λ“€μ„ μˆœμ„œλŒ€λ‘œ λ”ν•΄μ€Œ
        for(int i = 0; i < N; i++){
            sum = sum + people[i];

            result = result + sum;
        }

        System.out.println(result);
    }
}