문제출처: https://www.acmicpc.net/problem/5691
문제
세 정수 A, B, C의 평균은 (A+B+C)/3이다. 세 정수의 중앙값은 수의 크기가 증가하는 순서로 정렬했을 때, 가운데 있는 값이다.
두 정수 A와 B가 주어진다. 이때, A, B, C의 평균과 중앙값을 같게 만드는 가장 작은 정수 C를 찾는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, A와 B가 주어진다. (1 ≤ A ≤ B ≤ 109) 입력의 마지막 줄에는 0이 두 개 주어진다.
출력
각 테스트 케이스에 대한 정답을 한 줄에 하나씩 출력한다.
풀이
단순히 세 수의 평균값과 중앙값을 같게 만드는 수를 구하는문제입니다.
정답률을 보고 대충 주어진 입력 케이스를 유추하여 '2A-b인게 답이구나' 생각 할 수있지만 노트에 끄적여보며 왜 저 식이 답인지 알아봅시다. 이런 손으로 푸는 연습들이 어려운 수학문제를 풀 때 충분한 밑거름이 될 거라고 생각합니다.
1. 세 수의 평균을 구하는 식은 (A+B+C)/3입니다.(이 때 C가 답)
2. C를 추가했을 때 가장 작은 중앙값은 무조건 A입니다. (A의 왼쪽에 오나 오른쪽에 오나 가장 작은 중앙값은 A이므로)
3. 구하는 답이 1번식==2번식일 때 C의 값이므로 풀어써봅니다. 나오는 C에대한 식을 출력하면됩니다.
(A+B+C)/3 == A -> (A+B+C)==3A -> C=2A-B
코드
#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 << endl; } }
결과
'문제풀이(BOJ) > 규칙찾기' 카테고리의 다른 글
[백준 11312] 삼각 무늬-2 (0) | 2019.12.15 |
---|---|
[백준 1834] 나머지와 몫이 같은 수 (0) | 2019.12.13 |
[백준 1964] 오각형,오각형,오각형... (0) | 2019.12.12 |
[백준 1748] 수 이어 쓰기1 (0) | 2019.12.06 |
[백준 10992] 별찍기-17 (0) | 2019.12.01 |