Algorithm/백준 문제풀이

[백준] 18234번 당근 훔쳐 먹기 - Java

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

문제출저 : 

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

 

18234번: 당근 훔쳐 먹기

첫 번째 줄에 N(1 ≤ N ≤ 200,000)과 T(N ≤ T ≤ 100,000,000)가 공백으로 구분되어 주어진다. 오리는 당근의 맛을 충분히 높이기 위해 항상 N이상인 T일 동안 재배한다. 다음 N개의 줄에 걸쳐서 i+1번째

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;
        }


    }



}