728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 상근이가 고른 네 개의 숫자 중 세 개가 주어진다. 이 숫자는 크기 순이 아닐 수도 있고, -100보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
첫째 줄에 네 번째 숫자를 출력한다. 정답이 여러 개일 경우에는 아무거나 출력하면 된다. 또한 정답이 존재하지 않는 경우는 입력으로 주어지지 않는다.
소스코드
#include <algorithm> #include <iostream> #include <vector> using namespace std; int main(void) { vector<int> arr(3); for (int i = 0; i < 3; i++) cin >> arr[i]; sort(arr.begin(), arr.end()); int d1, d2; d1 = arr[1] - arr[0]; d2 = arr[2] - arr[1]; int ans; if (d1 == d2) ans = arr[2] + d1; else { if (d1 > d2) { ans = arr[0] + d2; } else { ans = arr[1] + d1; } } cout << ans; }
Tip
크기순으로 일단 정렬을 실시해주고, 등차수열을 이루기 위한 케이스를 찾아나서면 되는 문제다. 이미 주어진 숫자에 대한 차이값이 동일하다면, 그 값을 토대로 다음 값을 아무렇게나 계산해도 되지만, 두 개의 차이값이 다르다면 보다 큰 차이값을 보이는 수 사이에 수를 끼워넣는 식으로 풀어나간다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 9469 - 폰 노이만(ACM-ICPC Regionals) (0) | 2019.02.19 |
---|---|
백준] 3029 - 경고(COCI 2006/2007) (0) | 2019.02.18 |
백준] 2891 - 카약과 강풍(COCI 2009/2010) (0) | 2019.02.16 |
백준] 3486 - Adding Reversed Numbers(ACM-ICPC Regionals) (0) | 2019.02.07 |
백준] 10826 - 피보나치 수 4 (0) | 2019.02.06 |