2022.05.07

bin1225·2022년 5월 6일
0

c++ 알고리즘

목록 보기
4/35
post-thumbnail
  1. 카드게임
int main(){

	//freopen("input.txt","rt",stdin);
	vector<int> a,b;
	int sumA=0;
	int sumB=0;
	int tmp;
	for(int i=0;i<10;i++){
		cin>>tmp;
		a.push_back(tmp);
	}
	for(int i=0;i<10;i++){
		cin>>tmp;
		b.push_back(tmp);
	}
	
	char flag='D';
	for(int i=0;i<10;i++){
		if(a[i]>b[i]){
			sumA+=3;
			flag = 'A';
		}
		else if(a[i]==b[i]){
			sumA +=1;
			sumB +=1;
		}
		else {
			sumB+=3;
			flag = 'B';
		}
	}
	cout<<sumA<<' '<<sumB<<endl;
	char result;
	if(sumA>sumB) result = 'A';
	else if(sumA<sumB) result = 'B';
	else {
		if(flag=='A')
			result = 'A';
		else if(flag=='B')
			result = 'B';
		else result = 'D';
	}
	
	cout<<result;
	
	return 0;

}
  1. 온도의 최대값
int main(){

	//freopen("input.txt","rt",stdin);
	int n,k;
	cin>>n>>k;
	vector<int> nums;
	int tmp;
	int answer=0;
	
	for(int i=0; i<k; i++){
		cin>>tmp;
		nums.push_back(tmp);
		answer+=tmp;
	}
	
	int sum=answer;
	for(int i=k;i<n;i++){
		cin>>tmp;
		nums.push_back(tmp);
		
		sum+=tmp;
		sum-=nums[i-k];
	
		if(sum>answer){
			answer=sum;
		}
	}
	
	cout<<answer;
	return 0;
	
}

처음에는 이중 for 문을 이용해서 계속 합을 다 구하는 코드를 작성했는데, time limit가 많이 나왔다.
연속적으로 어떤 값들의 합을 구해야 할 때는, 구해진 합을 이용해서 다음 값을 구하는 방법을 고려해보면 더 효율적인 방법이 있다.

0개의 댓글