[문제]
[문제 설명]
- 그림을 보니 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 |