728x90
만점 코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int Answer;
int T, test_case;
int n, i, j, big;
int arr[300001];
cin >> T;
for(test_case = 0; test_case < T; test_case++)
{
Answer = 0;
cin>>n;
for(i=0; i<n; i++) {
cin>>arr[i];
}
sort(arr, arr+n);
big=-1;
for(i=0; i<n; i++) {
if(arr[i]+n-i>big) big=arr[i]+n-i;
}
for(i=n-1; i>=0; i--) {
if(arr[i]+n>=big) Answer++;
}
cout << "Case #" << test_case+1 << '\n';
cout << Answer << '\n';
}
return 0;
}
더보기
//1. 처음에는 단순하게 생각해서 TLE를 받고 40점이었다.
#include <iostream>
#include <algorithm>
using namespace std;
int Answer;
int main()
{
int T, test_case;
int n, i, j, big, f;
int arr[300001];
cin >> T;
for(test_case = 0; test_case < T; test_case++)
{
Answer = 0;
cin>>n;
for(i=0; i<n; i++)
cin>>arr[i];
sort(arr, arr+n);
big=arr[n-1];
for(i=0; i<n; i++) {
f=0;
for(j=i+1; j<n; j++) {
if((arr[i]+n)<(arr[j]+n-j)) {
f=1;
break;
}
}
if(!f) Answer++;
}
cout << "Case #" << test_case+1 << endl;
cout << Answer << endl;
}
return 0;
}
//2. 그 후 해본 방법은 만점과 비슷한 방법이나 한가지 놓쳐 0점
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char** argv)
{
int Answer;
int T, test_case;
int n, i, j, big;
int arr[300001];
cin >> T;
for(test_case = 0; test_case < T; test_case++)
{
Answer = 0;
cin>>n;
for(i=0; i<n; i++) {
cin>>arr[i];
}
sort(arr, arr+n);
big=arr[n-1]+1;
for(i=n-1; i>=0; i--) {
if(arr[i]+n>=big) Answer++;
}
cout << "Case #" << test_case+1 << '\n';
cout << Answer << '\n';
}
return 0;
}
사실 2, 3번 코드 차이를 모르겠다. **<미션> 알아낼 것**
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[codeground] Practice. 3. 시험 공부 (0) | 2020.08.26 |
---|---|
[NYPC] [2019 예선 연습] 1. 비밀번호 검사 (0) | 2020.08.25 |
[codeground] Practice. 1. 숫자 골라내기 (0) | 2020.08.21 |
[백준] 16180. New House <C++> (0) | 2020.08.11 |
[백준] 1920. 수 찾기 <C++> (0) | 2020.07.28 |
댓글