Development Artist

[Baekjoon, C++] 10773번 : 제로 본문

Algorithm/Baekjoon

[Baekjoon, C++] 10773번 : 제로

JMcunst 2021. 1. 6. 16:44
728x90
반응형

도입

백준 단계별 풀기에서 스택 2번째 문제이다.

10773번 문제, 입력, 출력


10773번 입출력 예제 1, 2


풀이

문제를 잠깐 생각을 해본다. 큰 그림을 그리는 것이 중요하다.

 


첫 번째는, 스택의 개념이다. 10828 문제에서 설명해 놓은 것이 있다. 링크를 첨부하겠다.

jmcunst.tistory.com/4

 

[Baekjoon, C++] 10773번 : 제로

백준 단계별 풀기에서 스택 2번째 문제이다. 링크는 아래와 같다. www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다...

jmcunst.tistory.com


두 번째는, for문이다. K개의 정수를 받을 것이다. 반복적으로 받아야 받을 때 마다 처리할 수 있다. 정수를 받을 때 마다, 해당 정수를 스택에 넣을지 말지 등의 처리를 판단 해야한다. 


세 번째는, case 분리이다. 스택에 숫자를 넣고 빼는데에 분명한 조건이 있다. 문제의 경우에는 0인 경우 스택에서 빼주고, 0이 아니면 스택에 넣어준다. 따라서 case는 2개, 입력 받는 정수가 0인 경우와 아닌 경우이다. 


네 번째는, 합산이다. K개의 정수를 입력받고 처리를 하고 스택 구성이 끝난 뒤에, 스택에 있는 정수들의 합을 계산해야한다.


다섯 번째는, 라이브러리가 있는지! stack 을 사용할 것이다. 


Visual Studio 2019로 코드를 작성한 결과다. 간단한 설명을 라인마다 주석을 달아 놓았다.

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
36
37
38
#include<iostream>
#include<stack>    // 표준 라이브러리 stack을 사용하기 위함
 
using namespace std;
 
int main() {
    int numberOfRecord; // 명령어수 N 선언
    stack<int> st; //  int Data Type을 넣을 stack 선언
    int record;
    int sum = 0;
    int stack_size = 0;
 
    cin >> numberOfRecord;  //명령어수 N을 유저로 부터 받는다. 
 
    for (int i = 0; i < numberOfRecord; i++) {
        cin >> record;       // 유저로 부터 명령어를 받는다. 
 
        if (record == 0) {  //push 일때 // 뒤에 오는 숫자를 st에 넣는다.
            st.pop();
        }
        else{    //pop 일때 // st의 젤 위의 값을 뽑아 출력한다. 
            st.push(record);
        }
        
    }
 
    stack_size = st.size();  // stack의 size를 저장한다. 
 
    for (int j = 0; j < stack_size; j++) {   // stack의 사이즈 만큼 반복. st.size()를 쓸수 없다. 반복문을 돌면서 stack의 사이즈가 변하기 때문.
        sum += st.top();     // 제일 위의 값을 sum에 더한다. 
        st.pop();            // 스택에서 제일 위의 값을 지운다. 
    }
 
    cout << sum << endl;
 
    return 0;
}
 
cs

 

이상으로 10773번 문제 제로 였다. 피드백은 언제나 환영이다.

728x90
반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

[Baekjoon, C++] 1874번 : 스택 수열  (0) 2021.01.09
[Baekjoon, C++] 4949번 : 균형잡힌 세상  (0) 2021.01.08
[Baekjoon, C++] 9012번 : 괄호  (0) 2021.01.07
[Baekjoon, C++] 10828번 : 스택  (0) 2021.01.05
[Baekjoon] 시작  (0) 2021.01.05
Comments