본문 바로가기
알고리즘/문제

[codeground] Practice. 2. 프로그래밍 경진대회

by 코드 이야기 2020. 8. 22.
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

댓글