https://www.acmicpc.net/problem/2309
9명의 난쟁이 중 7명이 진짜이고 진짜 난쟁이의 키 합이 100이다.
일단 싹 다 더하고 임의로 난쟁이 2명의 키를 빼줘서 100이 되는 경우를 찾으면 된다.
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 58 59 60 61 62 63 64 65 66 67 68 | #include<stdio.h> typedef enum _BOOL { FALSE = 0, TRUE =1 } BOOL; void swap(int *A, int *B) { int temp; temp = *A; *A = *B; *B = temp; } int partition(int *A, int p, int r) { int i = p - 1; for (int j = p; j < r; j++) { if (A[j] < A[r]) { swap(&A[++i], &A[j]); } } swap(&A[i + 1], &A[r]); return i + 1; } void quickSort(int *A, int p, int r) { int q; if (p < r) { q = partition(A, p, r); quickSort(A, p, q - 1); quickSort(A, q + 1, r); } } int main() { int height[9]; int sum = 0; int not1, not2; int isFound = FALSE; for (int i = 0; i < 9;i++) { scanf("%d",&height[i]); sum += height[i]; } quickSort(height, 0, 8); for (int i = 0; i < 9;i++) { for (int j = 0; j < 9;j++) { if (i != j && sum-(height[i]+height[j]) == 100) { not1 = i, not2 = j; isFound = TRUE; break; } } if (isFound) break; } for (int i = 0; i < 9;i++) { if(i != not1 && i != not2) printf("%d\n", height[i]); } system("pause"); return 0; } | cs |
'백준' 카테고리의 다른 글
2606)바이러스 (0) | 2019.02.12 |
---|---|
2605)줄 세우기 (0) | 2019.02.11 |
2217)로프 (0) | 2019.02.11 |
2290)LCD Test (0) | 2019.02.10 |
9324)진짜 메세지 (0) | 2019.02.09 |