Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 드림핵
- PHP 웹페이지 만들기
- 숙명여자대학교 정보보안 동아리
- c++
- SWEA
- 머신러닝
- 파이썬
- Python
- HTML
- WarGame
- BOJ
- Javascript
- hackctf
- CSS
- BOJ Python
- lob
- XSS Game
- c
- 기계학습
- C언어
- 숙명여자대학교 정보보안동아리
- 풀이
- The Loard of BOF
- 웹페이지 만들기
- siss
- hackerrank
- Sookmyung Information Security Study
- 자료구조 복습
- 생활코딩
- 백준
Archives
- Today
- Total
혜랑's STORY
[HackerRank] Equal Stacks 본문
3주차 자료구조 복습
Prepare > Data Structures > Stacks
풀이
스택을 사용하여 h1, h2, h3 배열의 데이터 합이 같아지도록 만드는 문제이다. 배열을 거꾸로 돌며 각 스택에 넣어주며, 합을 계산하였다. 이후 각 합이 가질 수 있는 모든 경우의 수를 계산하여 데이터를 제거할 스택을 골라 num에 넣어주고, switch를 이용하여 최상위 값을 제거하였다.
전체 코드는 다음과 같다.
int equalStacks(vector<int> h1, vector<int> h2, vector<int> h3) {
stack<int> s_h1, s_h2, s_h3;
int sum1, sum2, sum3, num;
sum1 = sum2 = sum3 = 0;
for(int i=h1.size()-1; i>=0; i--){
s_h1.push(h1[i]);
sum1 += s_h1.top();
}
for(int i=h2.size()-1; i>=0; i--){
s_h2.push(h2[i]);
sum2 += s_h2.top();
}
for(int i=h3.size()-1; i>=0; i--){
s_h3.push(h3[i]);
sum3 += s_h3.top();
}
while(true){
if((sum1 == sum2) && (sum2 == sum3)) break;
if(sum1 > sum2){
if(sum1 > sum3) num = 1;
else num = 3;
}
if(sum2 > sum3){
if(sum2 > sum1) num = 2;
else num = 1;
}
if(sum3 > sum1){
if(sum3 > sum2) num = 3;
else num = 2;
}
switch (num) {
case 1:
sum1 -= s_h1.top();
s_h1.pop(); break;
case 2:
sum2 -= s_h2.top();
s_h2.pop(); break;
case 3:
sum3 -= s_h3.top();
s_h3.pop(); break;
}
}
return sum1;
}
여러 테스트 케이스도 통과하였다.
'2021 SISS 21기 활동 > 2학기 C' 카테고리의 다른 글
[HackerRank] Electronics Shop (0) | 2021.10.01 |
---|---|
[HackerRank] Closet Numbers (0) | 2021.09.24 |
[HackerRank] Jim and the Orders (0) | 2021.09.17 |
[HackerRank] Permuting Two Arrays (0) | 2021.09.17 |
[HackerRank] Mark and Toys (0) | 2021.09.12 |