Fascination
article thumbnail

1. [문제]

 

Equal Stacks | HackerRank

Equalize the piles!

www.hackerrank.com

 

 

2. [문제 설명]

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

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

 

 

3. [문제 풀이]

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

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

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

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

 

 

4. [코드]

<c++ />
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; }

 

 

5. [실행 결과]

'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

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