버거와
사이드와
음료수를 삽니다
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);
}
}
어렵게 코드가 나와버렸네요 ㅋㅋ
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 17103 JAVA 자바] 골드바흐 파티션 (0) | 2023.08.27 |
---|---|
[백준 15894 JAVA 자바] 수학은 체육과목 입니다 (0) | 2023.08.27 |
[백준 15649 JAVA 자바] N과 M (1) (0) | 2023.08.26 |
[백준 15596 JAVA 자바] 정수 N개의 합 (0) | 2023.08.26 |
[백준 15552 JAVA 자바] 빠른 A+B (0) | 2023.08.26 |