C_C++

C++ - 백준 5691 평균 중앙값 문제

ncode 2025. 1. 30. 16:53
728x90
반응형
/* 백준 5691 평균 중앙값 문제

* 문제

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

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

* 입력

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

* 출력

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

* 예제 입력 1

1 2
6 10
1 1000000000
0 0

* 예제 출력 1

0
2
-999999998

*/

/* 풀이

1 ≤ A ≤ B ≤ 109 이므로, C 의 위치는

    i)   C ≤ A ≤ B
    ii)  A ≤ C ≤ B
    iii) A ≤ B ≤ C

가 될 수 있는데 가장 작은 정수를 구하는 것이므로 i) 의 경우가 가장 작은 정수를 구할 수 있다.

이 경우, (C + A + B) / 3 = A 이므로 C = 2A - B 가 된다.

*/

#include <iostream>

using std::cin, std::cout;

int main() {

    while (true) {
        int a, b, c;
        cin >> a >> b;

        if (a == 0 && b == 0) {
            break;
        }

        c = 2 * a - b;
        cout << c << '\n';
    }
}
728x90
반응형