본문 바로가기
Develop/백준 (Cpp)

[백준] 5691번 : 평균 중앙값 문제 (C++)

by Tarra 2023. 2. 13.

5691번 : 평균 중앙값 문제


문제 )

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

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

 

 

입력 :

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

 

 

 

출력 :

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

 

 

 

 

 

풀이)

A, B, C의 함정에 빠지면 안되는 문제이다.

 

가장 작은 C값을 찾아야 하므로, C가 가장 작다고 생각하면

 

예시에서의 B는 주어지는 A, C는 주어지는 B가 된다.

 

따라서 가장 작은 C를 알아보기 쉽게 z라고 한다면

 

(z + A + B) / 3 = A가 되므로

 

z = 2 * A - B 임을 알 수 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
int main()
{
    int a, b;
    while (1) {
        cin >> a >> b;
        if (a == 0 && b == 0) {
            break;
        }
 
        cout << 2 * a - b << "\n";
    }
 
    return 0;
}
 
cs

출처 : https://www.acmicpc.net/problem/5691 

 

5691번: 평균 중앙값 문제

세 정수 A, B, C의 평균은 (A+B+C)/3이다. 세 정수의 중앙값은 수의 크기가 증가하는 순서로 정렬했을 때, 가운데 있는 값이다. 두 정수 A와 B가 주어진다. 이때, A, B, C의 평균과 중앙값을 같게 만드는

www.acmicpc.net