rueki
SW Expert Academy 8673. 코딩 토너먼트1 본문
728x90
반응형
문제 링크 :
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int T;
cin>>T;
for(int i=0;i<T;i++)
{
int k=0;
int num=0;
int sum = 0;
vector<int> v;
vector<int> v2;
cin>>k;
int p = pow(2,k); // 인원수]
for(int z =0;z<p;z++)
{
cin>>num;
v.push_back(num);
}
for(int a =0;a<k;a++){
for(int j=0;j<p;j+=2)
{
int temp=0;
if(v[j]>v[j+1])
{
temp =v[j];
}else
{
temp = v[j+1];
}
sum += abs(v[j] - v[j+1]);
v2.push_back(temp);
v.clear();
v.assign(v2.begin(), v2.end());
}
v2.clear();
p = p/2;
}
cout<<'#'<<i+1<<' '<<sum<<'\n';
}
return 0;
}
토너먼트 진행 시, 2의 k승 단위로 짜여지기 때문에, 라운드를 올라갈때마다, 나누기 2씩해서 라운드를 줄일 수가 있다.
라운드를 줄일 때마다 숫자들을 벡터에 할당하고 clear를 반복해서 벡터 사용을 반복할 수 있게 하였다.
위의 칸 수대로 줄이고 값을 비교해서 넣고, 출력할 값을 계속 더해서 출력하면 풀 수 있는 문제다.
728x90
반응형
'C, C++ 문제풀이' 카테고리의 다른 글
이진트리 순회 (0) | 2020.10.06 |
---|---|
SW Expert Academy 8500. 극장 좌석 (0) | 2020.04.15 |
SW Expert Academy 8821. 적고 지우기 (0) | 2020.04.12 |
SW Expert Academy 8931. 제로 (0) | 2020.04.07 |
SW Expert Academy 9317. 석찬이의 받아쓰기 (0) | 2020.04.07 |
Comments