728x90
2011년 한국정보올림피아드(KOI) 초등부 문제 : 저울
이 문제의 답안과 채점은 Jungol이라는 사이트에서 이뤄졌다.
(문제 번호 2499 : 저울)
필자는 두 가지 답안을 작성했다.
그리디 알고리즘을 통해 최적해를 구하는 방법을 잘못 접근했기 때문인데,
최대에서 최소로 최적해를 구성하면서 TLE(시간 초과) 문제가 발생해서 만점을 받지 못했고,
최소에서 최대로 최적해를 구성하는 건, TLE 문제를 해결할 수 있었다.
아주 간단한 원리를 까먹고 진행해서...
1안 : TLE 발생
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 | #include <iostream> using namespace std; int main(void) { int n; int arr[1000]; int mass1 = 1, mass2; int i, j, tmp; cin >> n; for (i = 0; i < n; i++) { cin >> arr[i]; } /* 합을 구성하되 최대에서 최소 순서로 탐색하며 조합하면서 구성 가능성 따지기 */ /* TLE(Time Limit Error) 발생 */ if (arr[n - 1] != 1) { cout << "1"; return 0; } for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (arr[i] < arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } while (1) { mass2 = mass1; i = 0; while (i < n && mass2 != 0) { if (mass2 >= arr[i]) { mass2 -= arr[i]; } i++; } if (mass2 > 0) break; mass1++; } cout << mass1; return 0; } | cs |
2안 : TLE 통과
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 | #include <iostream> using namespace std; int main(void) { int n; int arr[1000]; int i, j, tmp; int sum; cin >> n; for (i = 0; i < n; i++) { cin >> arr[i]; } /* 최소에서 최대로 구성, 합을 구성하는 방식으로 */ /* 추의 무게합이 다음 무게보다 적었을 때 탐색 */ /* 다음 추의 무게가 이 무게를 측정하지 못하면 측정 불가 */ for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) { if (arr[i] > arr[j]) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } if (arr[0] != 1) { cout << "1"; return 0; } sum = arr[0]; for (i = 1; i < n; i++) { if (sum + 1 >= arr[i]) { sum += arr[i]; } else { break; } } cout << sum + 1; return 0; } | cs |
728x90
'Computer Science > Data Structure, Algorithm' 카테고리의 다른 글
DataStructure] C언어로 쉽게 풀어쓴 자료구조 4장 - 3 (0) | 2017.04.03 |
---|---|
DataStructure] C언어로 쉽게 풀어쓴 자료구조 4장 - 2 (0) | 2017.04.03 |
Algorithm] 그리디 알고리즘(Greedy Algorithm) (0) | 2017.02.13 |
DataStructure] C++ 이중연결리스트(Double Linked List) (2) | 2017.01.31 |
DataStructure] C++ 연결 리스트(Single Linked List) (0) | 2017.01.26 |