[YULO] 알고스팟 입문자 질문입니다 firenin YULO 선생님의 고민 문제입니다. https://algospot.com/judge/problem/read/YULO 가장 큰 1등의 기대 점수를 얻는 문제입니다. 문제에 대한 접근이 잘못된건지, 다른 문제인건지 알 방법이 없어서 질문 남깁니다. 문제 접근은 아래와 같은 방식입니다. * 점수를 n개의 동적 배열에 입력한다. 입력 받은 점수를 오름차순으로 정렬한다. i, tempIndex 두 개의 인덱스는 맨 앞과 맨 뒤에서 한 칸씩 전, 후진 하며 해당 값의 평균을 구한다. 평균 중 가장 큰 값을 출력한다. * #include <iostream> using namespace std; void q_sort(int nums[], int left, int right); void QuickSort(int nums[], int size) { q_sort(nums, 0, size - 1); } void q_sort(int numbers[], int left, int right) { if (left == right) return; int pivot, l_hold, r_hold; l_hold = left; r_hold = right; pivot = numbers[left]; while (left < right) { while ((numbers[right] >= pivot) && (left < right)) right--; if (left != right) { numbers[left] = numbers[right]; left++; } while ((numbers[left] <= pivot) && (left < right)) left++; if (left != right) { numbers[right] = numbers[left]; right--; } } numbers[left] = pivot; pivot = left; left = l_hold; right = r_hold; if (left < pivot) q_sort(numbers, left, pivot - 1); if (right > pivot) q_sort(numbers, pivot + 1, right); } float GetAverage(float s1, float s2) { return (s1 + s2) / 2; } int main() { int t; // t <= 50 int n; // 3 <= n <= 40 cin >> t; while (t--) { float maxScore = 0; cin >> n; int* score = new int[n]; for (int i = 0; i < n; i++) { cin >> score[i]; // 0점 이상 100점 이하 } QuickSort(score, n); int tempIndex = n - 1; float tempScore = 0; for (int i = 0; i < n; i++) { tempScore = GetAverage(score[i], score[tempIndex]); if (maxScore < tempScore) { maxScore = tempScore; } tempIndex--; } cout << fixed; cout.precision(1); cout << maxScore; } } 11년 전
1개의 댓글이 있습니다. VOCList 코드를 모두 보지는 않았지만, 먼저 메인 함수만 보았을 때 매번 답 출력 후에 줄바꿈이 출력되지 않는 것 같습니다. 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
firenin
YULO 선생님의 고민 문제입니다.
https://algospot.com/judge/problem/read/YULO
가장 큰 1등의 기대 점수를 얻는 문제입니다.
문제에 대한 접근이 잘못된건지, 다른 문제인건지 알 방법이 없어서
질문 남깁니다.
문제 접근은 아래와 같은 방식입니다.
*
점수를 n개의 동적 배열에 입력한다.
입력 받은 점수를 오름차순으로 정렬한다.
i, tempIndex 두 개의 인덱스는 맨 앞과 맨 뒤에서 한 칸씩
전, 후진 하며 해당 값의 평균을 구한다.
평균 중 가장 큰 값을 출력한다.
*
11년 전