정수론(Number theory)

백준 2997번: 네번째 수

cepiloth 2018. 6. 13. 19:49
반응형

https://www.acmicpc.net/problem/2997



1. 문제 요약

상근이는 등차수열을 이루는 정수 4개를 골랐다. 이것은 상근이가 고른 수 4개를 정렬했을 때, 인접한 쌍의 차이가 일정하다는 것을 의미한다. 그 다음 이렇게 고른 숫자 4개를 노래로 만들어서 외우고 다닌다. 어느날, 상근이는 자신이 고른 4개 숫자 중 1개를 까먹었다. 상근이가 고른 네 개의 숫자 중 세 개가 주어졌을 때, 네번째 숫자를 구하는 프로그램을 작성하시오.


2. 알고리즘

수열을 입력 받고 정렬 한다. 

각각의 수에서 차이 값을 구한다.


차이가 갔다면 3번째 수열에 덧셈을 해주고

차이가 다르다면 2 번째 수열에 뻴셈을 해준다.


3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <functional>         // greater 사용 위해 필요  
#include <string>
#include <map>
#include <math.h>
using namespace std;
 
int main() {
    std::ios::sync_with_stdio(false); cin.tie(0);
 
    int n=3;
    vector<int> arr(n);
 
    for(int i=0; i<n; i++)
        cin >> arr[i];
 
    sort(arr.begin(), arr.end());
 
    int b = arr[2- arr[1];
    int a = arr[1- arr[0];
 
    if (b == a)
        cout << arr[2+ b << endl;
    else if (b > a)
        cout << arr[2- a << endl;
    else
        cout << arr[1- b << endl;
    return 0;
}
cs

반응형