Algorithm/백준 문제풀이

[백준] 2109번 순회강연 - Java

너지살 2022. 5. 25. 21:34

 

 

문제출저 : https://www.acmicpc.net/problem/2109

 

2109번: 순회강연

한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다.

www.acmicpc.net

 

 

소스코드 : 

package studyGroup.may.may22;

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

/*

w <= p 이기 때문에
t-n일 째 되는 날부터 수확하자.

 */

public class 당근훔쳐먹기18234 {

    static int n; // 당근의 종류 수
    static long t; // 재배할 예정 일 수
    static ArrayList<carrot> carrots;

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        n = Integer.parseInt(st.nextToken());
        t = Long.parseLong(st.nextToken());

        carrots = new ArrayList<>();

        for(int i = 0; i < n; i++)
        {
            st = new StringTokenizer(br.readLine());

            long w = Integer.parseInt(st.nextToken());
            long p = Integer.parseInt(st.nextToken());

            carrots.add(new carrot(w,p));
        }

        Collections.sort(carrots, (o1, o2) -> (int) (o1.p - o2.p));

        long answer = 0;

        for(int i = 0; i < n; i++)
        {
            long result = (i + t - n) * carrots.get(i).p + carrots.get(i).w;
            answer += result;
        }

        System.out.println(answer);


    }

    public static class carrot {

        long w;
        long p;

        carrot(long w, long p)
        {
            this.w = w;
            this.p = p;
        }


    }



}