Fascination
article thumbnail

[문제]

 

Equal Stacks | HackerRank

Equalize the piles!

www.hackerrank.com

 

 

[문제 설명]

- 그림을 보니 push된 반대 순서대로 pop이 되는 것을 확인할 수 있음

- 반환 값은 각각 pop하며 스택에 남은 수의 합이 같아지는 순간 그 합을 리턴함

 

 

[문제 풀이]

- stack과는 다르게 아래서 깔린 수부터 pop되므로 reverse함수를 통해 순서를 변경해주어야 함

- sum 함수를 선언하여 각 벡터의 원소의 합을 각각 구함

- 세 합이 같은 수가 될때까지 각각의 합을 감소시켜 같은 수가 될 때까지 반복함

- 같은 수가 되는 순간 그 수를 반환시킴

 

 

[코드]

int sum(vector<int> a){
    int sum=0;
    for(int i=0;i<a.size();i++){
        sum+=a[i];
    }
    return sum;
}

int equalStacks(vector<int> h1, vector<int> h2, vector<int> h3) {
    int a= sum(h1);
    int b=sum(h2);
    int c=sum(h3);
    
    reverse(h1.begin(),h1.begin()+h1.size());
    reverse(h2.begin(),h2.begin()+h2.size());
    reverse(h3.begin(),h3.begin()+h3.size());
    
    int m = min(a,b);
    m = min(m,c);
    
    while(!(a==b&&b==c)){
        if(a>m){
            a-=h1.back();
            h1.pop_back();
        }
        else if(b>m){
            b-=h2.back();
            h2.pop_back();
        }
        else if(c>m){
            c-=h3.back();
            h3.pop_back();
        }
        m = min(a,b);
        m = min(m,c);
    }
    return m;
}

 

 

[실행 결과]

'CODE > HackerRank' 카테고리의 다른 글

[C++] HackerRank : Plus Minus  (0) 2021.10.03
[C++] HackerRank : Grading Students  (0) 2021.10.03
[C++] HackerRank : Simple Array Sum  (0) 2021.09.21
[C++] HackerRank : Diagonal Difference  (0) 2021.09.21
[C++] HackerRank : Time Conversion  (0) 2021.09.19
profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!