본문 바로가기

백준 문제풀기/JAVA

[백준 15720 JAVA 자바] 카우버거

버거와

사이드와

음료수를 삽니다

 

3개를 사면 세트할인 10%가 들어 갑니다

 

1000 2000

1000

1000 이 입력된다면

 

세트는 1000 1000 1000 이 아닌 2000 1000 1000으로 묶어서 400원 할인을 받아야겠죠?

 

이 문제는

1. 총 몇개의 세트를 구매했는가

2. 최대한 할인을 받는 방법

을 코딩하는게 핵심입니다

 

코드입니다

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		int c = Integer.parseInt(st.nextToken());
		
		int min = a<b?a:b;
		min = min<c?min:c;
		
		int allsum = 0;
		
		int[] arra = new int[a];
		int[] arrb = new int[b];
		int[] arrc = new int[c];
		
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<a; i++) {
			arra[i] = Integer.parseInt(st.nextToken());
			allsum += arra[i];
		}
		
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<b; i++) {
			arrb[i] = Integer.parseInt(st.nextToken());
			allsum += arrb[i];
		}
		
		st = new StringTokenizer(br.readLine());
		for(int i=0; i<c; i++) {
			arrc[i] = Integer.parseInt(st.nextToken());
			allsum += arrc[i];
		}
		
		System.out.println(allsum);
		
		allsum = 0;
		
		Arrays.sort(arra);
		Arrays.sort(arrb);
		Arrays.sort(arrc);
		
		for(int i=a-1; i>=a-min; i--) {
			arra[i] *= 0.9;
		}
		for(int i=b-1; i>=b-min; i--) {
			arrb[i] *= 0.9;
		}
		for(int i=c-1; i>=c-min; i--) {
			arrc[i] *= 0.9;
		}
		
		for(int i=0; i<a; i++) {
			allsum += arra[i];
		}
		for(int i=0; i<b; i++) {
			allsum += arrb[i];
		}
		for(int i=0; i<c; i++) {
			allsum += arrc[i];
		}
		
		System.out.print(allsum);
	}
}

 

어렵게 코드가 나와버렸네요 ㅋㅋ