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

 

11508번: 2+1 세일

KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두

www.acmicpc.net

 

코드설명

그리디와 정렬문제입니다.

 

내림차순으로 정렬한뒤, 유제품의 3개중 가장 저렴한것이 무료로 제공되기에, (3, 3, 2) 가 있으면 2를 구매하지 않도록 처리합니다.

 

아래의 Collectons.reverseOrder()를 사용하기 위해서는 Int가 아닌 Integer Wrapper 클래스를 사용해야합니다. (int에는 해당 함수가 존재하지않아 Integer가 Wrapper 클래스로써 기본패키지에 포함된 모든 클래스를 사용할 수 있게 해줍니다.)

Arrays.sort(arr, Collections.reverseOrder())

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;


public class Main {
	
	public static int N;
	public static Integer[] arr;
	public static int answer = 0;
    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());
    	arr = new Integer[N];
    	
    	for(int i=0;i<N;i++) {
    		st = new StringTokenizer(br.readLine());
    		arr[i] = Integer.parseInt(st.nextToken());
    		
    	}
    	Arrays.sort(arr, Collections.reverseOrder());
    	
    	for(int i=0;i<N;i++) {
    		if(i % 3 == 2) {
    		}else {
    			answer += arr[i];
    		}
    	}
    	System.out.println(answer);
    }
    
}

 

+ Recent posts