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

[SWEA] 8673. 코딩 토너먼트1

by hyerann 2020. 3. 17.

모든 사람들의 코딩 실력을 입력받고 대진표에 따라 

  • 경기를 치르는 두 코딩 실력 중 더 높은 숫자(다음 라운드에 출전할)만 vnext 벡터에 넣었습니다.
  • 경기를 치르는 두 코딩 실력의 차를 result에 더했습니다.

vnext의 사이즈가 1이 되면 최종 승자가 결정되었으므로 토너먼트가 종료되고, result를 반환하여 출력합니다.

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW2Jldrqlo4DFASu&categoryId=AW2Jldrqlo4DFASu&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

vector<int> vnow, vnext;

int getResult() {
    int result = 0;
    while(1) {
        vnow = vnext;
        vnext.clear();
        for(int i=0; i<vnow.size(); i+=2) {
            vnow[i]>=vnow[i+1]? vnext.emplace_back(vnow[i]):vnext.emplace_back(vnow[i+1]);
            result += abs(vnow[i]-vnow[i+1]);
        }
        if(vnext.size() == 1) {
            return result;
        }
    }
}

int main() {
    int T; cin >> T;
    for(int tc=1; tc<=T; tc++) {
        vnow.clear();
        vnext.clear();
        int K; cin >> K;
        for(int i=0; i<pow(2, K); i++) {
            int input; cin >> input;
            vnext.emplace_back(input);
        }
        cout << '#' << tc << ' ' << getResult() << '\n';
    }
    return 0;
}

댓글