ν•΄λ²„λ‹ˆ 2023. 11. 8. 15:53
λ°˜μ‘ν˜•

 

 

 

 

문제

https://www.acmicpc.net/problem/1758

 

1758번: μ•Œλ°”μƒ κ°•ν˜Έ

첫째 쀄에 μŠ€νƒ€λ°•μŠ€ μ•žμ— μ„œ μžˆλŠ” μ‚¬λžŒμ˜ 수 N이 주어진닀. N은 100,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€. λ‘˜μ§Έ 쀄뢀터 총 N개의 쀄에 각 μ‚¬λžŒμ΄ μ£Όλ €κ³  ν•˜λŠ” 팁이 주어진닀. νŒμ€ 100,000보닀 μž‘κ±°λ‚˜ κ°™

www.acmicpc.net

 

 

 

 

κ±°μŠ€λ¦„λˆμ„ 받을 수 μžˆλŠ” μ΅œλŒ€κ°’μ„ κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

 

 

 

 

 

 

 

 

 

 

풀이

μ΅œλŒ“κ°’μ„ κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” νŒμ„ κ°€μž₯ 많이 μ£ΌλŠ” μ‚¬λžŒλΆ€ν„° μ°¨λ‘€λŒ€λ‘œ μ„œμ•Όν•œλ‹€.

κ·Έλž˜μ„œ 배열을 μ •λ ¬ν•΄μ£Όκ³  μ΅œλŒ“κ°’μ„ κ΅¬ν–ˆλ‹€.

package algorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class Main {
    public int tip(int tipMoney, int index) {
        int tipCoin = tipMoney - index;
        return tipCoin < 0 ? 0 : tipCoin;
    }

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

        // μ•Œλ°”μƒ κ°•ν˜Έ νŒμ„ λ°›λŠ”λ‹€......
        // μ›λž˜ 10을 쀄렀고 ν–ˆλŠ”λ° (받은 λ“±μˆ˜ -1) 만큼 κ°•ν˜Έμ—κ²Œ μ€€λ‹€.
        // 예λ₯Όλ“€μ–΄ 5λ“±μœΌλ‘œ λ°›μ•˜λ‹€λ©΄ 10 - (5-1) = 6을 λ°›κ²Œ λœλ‹€.
        // λ§Œμ•½ 음수면 νŒμ€ 0을 λ°›λŠ”λ‹€. (받은 λ“±μˆ˜ -1) <= (μ£Όλ €ν–ˆλ˜ 팁) 이라면 νŒμ€ 받을 수 μ—†λ‹€.

        int num = Integer.parseInt(br.readLine());
        int[] arr = new int[num];
        long answer = 0;
        Main m = new Main();


        for (int i = 0; i < arr.length; i++) {
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);


        for (int i = 0; i < arr.length; i++) {
            answer += m.tip(arr[arr.length-i-1],i);
        }

        System.out.println(answer);
    }

}

 

 

 

 

 

 

 

 

 

 

μ •λ‹΅

 

 

 

 

 

 

λ°˜μ‘ν˜•