algorithm/백준

[백준] 13866 - 팀 나누기 Java[자바]

달마루 2023. 3. 9. 23:09


[Bronze IV] 팀 나누기 - 13866

문제 링크

 

13866번: 팀 나누기

입력은 네 개의 정수 A, B, C 및 D가 포함된 한 줄로 구성되며 4명의 스킬 레벨이 주어진다. (0 ≤ A ≤ B ≤ C ≤ D ≤ 104)

www.acmicpc.net

성능 요약

메모리: 17832 KB, 시간: 216 ms

분류

사칙연산(arithmetic), 구현(implementation), 수학(math)

문제 설명

4명의 친구가 탁구를 하고 있다. 각각은 정수형으로 표현된 스킬 레벨을 가지고 있고, 숫자가 높을수록 더 좋은 플레이어다.

4명의 친구는 각각 두 명씩 구성된 두 팀을 구성하려고 한다. 게임이 더 흥미롭게 하기 위해서 팀의 스킬 레벨을 최대한 가깝게 유지하기를 원한다. 팀의 스킬 레벨은 팀원의 스킬 레벨의 합계이다.

그들은 탁구 선수로는 탁월하지만, 수학이나 컴퓨터와 같은 다른 것들에 능숙하지 않다. 팀의 스킬 레벨이 가능한 작은 차이를 갖도록 도와주자.

입력

입력은 네 개의 정수 A, B, C 및 D가 포함된 한 줄로 구성되며 4명의 스킬 레벨이 주어진다. (0 ≤ A ≤ B ≤ C ≤ D ≤ 104)

출력

두 팀의 스킬 레벨 차이의 최솟값을 출력한다.

답 : 레벨 수치를 받아 정렬하고,
높은 사람과 낮은 사람, 중간인 사람들을로 구성하여
두 팀 스킬의 레벨 합계 차이 최소값을 출력한다.

import java.util.Arrays;
import java.util.Scanner;

public class Main {
        public static void main(String [] args) {
            int[] levels = new int[4];
            Scanner sc = new Scanner(System.in);
            for (int i = 0; i < 4; i++) {
                levels[i] = sc.nextInt();
            }

            // 배열 정렬하기
            Arrays.sort(levels);

            // 두 팀의 스킬 레벨 합계
            int team1 = levels[0] + levels[3];
            int team2 = levels[1] + levels[2];

            // 두 팀의 스킬 레벨 합계 차이의 최소값 출력하기
            System.out.println(Math.abs(team1 - team2));
            sc.close();
        }
}