반응형
https://www.acmicpc.net/problem/20366
20366번: 같이 눈사람 만들래?
높이가 (2, 5), (3, 5)로 구성된 눈사람 둘을 만드는 것이 최적의 경우 중 하나이다. |7-8| = 1 다른 경우로는 (2, 9), (5, 5)로 두 눈사람을 만드는 경우가 있다. |11-10| = 1
www.acmicpc.net
[ 문제풀이 ]
1. arr 배열에 수들을 입력받고, 오름차순으로 정렬합니다.
2. 이중 for문을 통해 첫 번째 눈사람을 고정시키고, 두 번째 눈사람을 투 포인터를 이용하여 temp에 저장합니다.
3. 첫 번째 눈사람과 두 번째 눈사람의 높이 차의 절댓값 중 최솟값을 ans에 저장하고, ans가 0이라면 바로 출력하고 프로그램을 종료시킵니다.
4. ans를 출력합니다.
[ 소스코드 ]
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #include<iostream> #include<algorithm> #include<cmath> using namespace std; int N; int arr[600]; int ans = 2011111111; int main() { scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d", &arr[i]); } sort(arr, arr + N); for (int i = 0; i < N ; i++) { for (int j = i + 1; j < N ; j++) { int H = arr[i] + arr[j]; int s, e; s = i + 1; e = N - 1; while (s < e) { int temp = arr[s] + arr[e]; if (s == i || s == j) { s++; continue; } if (e == i || e == j) { e--; continue; } ans = min(ans, abs(H - temp)); if (ans == 0) { printf("0"); return 0; } if (H - temp > 0) { s++; } else { e--; } } } } printf("%d", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 2436번 - 공약수 (C++) (0) | 2023.04.13 |
---|---|
[ 백준 ] 1484번 - 다이어트 (C++) (0) | 2023.04.12 |
[ 백준 ] 13144번 - List of Unique Numbers (C++) (0) | 2023.04.10 |
[ 백준 ] 22862번 - 가장 긴 짝수 연속한 부분 수열 (large) (C++) (0) | 2023.04.09 |
[ 백준 ] 2230번 - 수 고르기 (C++) (0) | 2023.04.08 |