일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vuejs
- 알고리즘
- django
- cos pro
- BAEKJOON
- DFS
- Vue
- 개발
- codingtest
- 코테
- 안드로이드스튜디오
- DFS와BFS
- 분할정복
- issue
- 백준
- 동적계획법과최단거리역추적
- Algorithm
- 코딩테스트
- DART
- Python
- AndroidStudio
- cos pro 1급
- 코드품앗이
- 동적계획법
- cos
- 안드로이드
- Flutter
- android
- C++
- 파이썬
- Today
- Total
Development Artist
[Baekjoon, C++] 10773번 : 제로 본문
도입
백준 단계별 풀기에서 스택 2번째 문제이다.
풀이
문제를 잠깐 생각을 해본다. 큰 그림을 그리는 것이 중요하다.
첫 번째는, 스택의 개념이다. 10828 문제에서 설명해 놓은 것이 있다. 링크를 첨부하겠다.
[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번 문제 제로 였다. 피드백은 언제나 환영이다.
'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 |