반응형
문제 출처 :
https://www.acmicpc.net/problem/10773
알고리즘 분석 :
문제 해결에 필요한 사항
1. 0이 있을 때와 없을 때의 판별
2. 스택
이 문제를 보고 스택임을 파악한다면 쉽게 문제를 해결 해 낼 수 있을 것이다.
스택 또한 #include <stack>로 제공되므로 이용을 하면 조금 더 간결한 코딩을 할 수 있을 것이다.
tmp == 0 ? T.pop() : T.push(tmp);의 해석은
cin(scanf)로 tmp에 받아낸 값이 0이면 값을 하나 pop하고, 0이 아니면 tmp에 있던 값을 push하라는 뜻이다.
pop()는 void형이기에 stack의 가장 위의 값을 받아내기 위해서는 top()를 써서 받아내야 한다.
소스 코드 :
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 32 33 34 35 | #include <iostream> #include <stack> using namespace std; int main() { stack <int>T; int n; int tmp, sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> tmp; tmp == 0 ? T.pop() : T.push(tmp); } for (; T.empty() == 0;) { int get = T.top(); T.pop(); sum = sum + get; } cout << sum; return 0; } // This source code Copyright is Crocus // Do you want to see more contents? click here >> | Crocus |
반응형
'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
[11650번] 좌표 정렬하기 (0) | 2016.08.22 |
---|---|
[7600번] 문자가 몇갤까 (0) | 2016.08.14 |
[2004번] 조합 0의 개수 (0) | 2016.08.12 |
[11931번] 수 정렬하기 4(Quick Sort, merge Sort, etc.) (0) | 2016.08.10 |
[10162번] 전자레인지 (0) | 2016.08.10 |