Algorithm

[Java] 백준 11948번 과목선택

로춘남 2021. 12. 30. 14:24
728x90


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

 

11948번: 과목선택

JOI는 물리, 화학, 생물, 지구과학, 역사, 지리 총 6 과목의 시험을 봤다. 각 시험의 만점은 100점이다. JOI는 물리, 화학, 생물, 지구과학 4과목 중에서 3 과목을 선택하고 역사, 지리 2 과목 중에

www.acmicpc.net

선택과목을 통해 최대값을 구하는 문제.

 

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

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        //택 3
        int A = Integer.parseInt(br.readLine());    //물리
        int B = Integer.parseInt(br.readLine());    //화학
        int C = Integer.parseInt(br.readLine());    //생물
        int D = Integer.parseInt(br.readLine());    //지구과학

        int Sum1 = 0;

        int[] total = new int[] {A, B, C, D};
        Arrays.sort(total);
        Sum1 = total[1]+total[2]+total[3]; //택 3 최대값

        //택 1
        int E = Integer.parseInt(br.readLine());    //역사
        int F = Integer.parseInt(br.readLine());    //지리

        int Sum2 = Math.max(E, F);

        System.out.println(Sum1 + Sum2);
    }
}

4과목중 3과목을 택하는 과정에서 배열을 적용하였다. 4개의 입력되는 값을 차례대로 배열에 담고, sort를 통해 낮은순서부터 차례대로 정렬하여, 가장 마지막 값부터 Sum1에 순차적으로 담아, 가장 큰 점수의 합이 나오도록 설정하였다.

 

2과목 중 1과목을 선택하는 과정에서는 두 수의 최대값을 비교할 수 있는 Math.max() 를 적용하였다.

이후 각각 합을 담아둔 Sum1과 Sum2를 사칙연산해주면 원하는 최고점수를 계산 할 수가 있다.

728x90