백준/Java

[백준 자바] 5691번(평균 중앙값 문제)

gamzaggang7 2024. 6. 10. 22:46
728x90

난이도 - 브론즈 3

 

문제

세 정수 A, B, C의 평균은 (A+B+C)/3이다. 세 정수의 중앙값은 수의 크기가 증가하는 순서로 정렬했을 때, 가운데 있는 값이다.

두 정수 A와 B가 주어진다. 이때, A, B, C의 평균과 중앙값을 같게 만드는 가장 작은 정수 C를 찾는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, A와 B가 주어진다. (1 ≤ A ≤ B ≤ 109) 입력의 마지막 줄에는 0이 두 개 주어진다. 

출력

각 테스트 케이스에 대한 정답을 한 줄에 하나씩 출력한다.

 


 

A는 B보다 작거나 같다. 세 수를 크기순으로 정렬했을 때 나올 수 있는 결과는 아래 3가지이다.

A B C

A C B 

C A B

평균과 중앙값을 같게 만드는 수 중 가장 작은 수를 구해야 하므로 중앙값이 A라고 가정한다. 그럼 다음과 같은 수식을 유도할 수 있다.

(A + B + C) / 3 = A

A + B + C = 3A

C = 2A - B

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main5691 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    StringBuffer sb = new StringBuffer();

    while (true) {
      StringTokenizer st = new StringTokenizer(br.readLine(), " ");
      int A = Integer.parseInt(st.nextToken());
      int B = Integer.parseInt(st.nextToken());

      if (A == 0 && B == 0)
        break;

      int C = 2 * A - B;

      sb.append(C).append('\n');
    }

    bw.write(sb.toString());

    bw.flush();
    br.close();
    bw.close();
  }
}

 

728x90