본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 2997 : 네 번째 수

반응형

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

 

2997번: 네 번째 수

첫째 줄에 상근이가 고른 4개의 수 중 3개가 주어진다. 이 수는 크기 순이 아닐 수도 있고, -100보다 크거나 같고, 100보다 작거나 같은 정수이다.

www.acmicpc.net

등차수열의 특성을 이용하는 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

 1. 3수를 입력받을 일차원 배열 a, 첫 번쨰 원소와 두 번쨰 원소의 차이 d, 두 번째와 세 번째 원소의 차이 d2를 선언 후 세 수를 입력해줍니다. 2. a배열의 원소를 오름차순으로 정렬해줍니다.

 3. d = a[1] - a[0], d2 = a[2] - a[1]로 저장해줍니다.

📔 풀이과정

세 경우로 답이 나눠집니다.

 1. d > d2인 경우

    2 6 8같은 경우입니다. 이 경우 중간 원소가 비어 있으므로 등차는 d2이며 a[0] + d2가 빈 원소의 값입니다. 이를 출력해줍니다.

 2. d == d2인 경우

    2 4 6같은 경우입니다. 이 경우에는 d, d2모두 등차이므로 아무거나 마지막 원소 a[2]에 더해준 값을 출력합니다.

 3. 그 외

    2 4 8같은 경우입니다. 이 경우 a[1]과 a[2]사이의 차이가 더 크므로 d가 등차이며 a[1] + d값을 출력해줍니다.

📔 정답출력

경우에 맞게 답을 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a[3], d, d2;
int main(){
    for(int i = 0; i < 3; i++) cin >> a[i];
    sort(a, a + 3);
    int d = a[1] - a[0];
    int d2 = a[2] - a[1];
    if(d > d2) cout << a[0] + d2;
    else if(d == d2) cout << a[2] + d;
    else cout << a[1] + d;
}

📕 Test Case

input

2 6 8

답 4