[백준 BOJ] 10773번 제로 (C++/cpp)
2022. 2. 5. 19:02ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/10773
접근 방법 - 스택을 이용한 사칙연산 문제
백준의 10773번 문제는 스택을 이용하여 정답을 구해내야하는 사칙연산 문제이다.
위 문제에는, 0을 입력받으면 최근 적은 숫자를 지우고, 이 외의 숫자를 입력받으면 연이어 숫자를 적는 규칙이 있다.
이 규칙을 기반으로 하여, 적힌 숫자들의 총합을 구하여 해결하면 되는 문제이다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
필자가 스택을 이용한 방법은 아래를 참고해보길 바란다.
코드의 실행 순서
1) 스택(s)을 선언한다.
2) 입력되는 숫자의 개수(n)를 입력받는다.
3) n에 따라 차례로 숫자를 입력받으면서, 아래의 연산을 동시에 수행한다.
- 0이 아닌 수가 입력되면, 해당 숫자를 스택에 push한다.
- 0이 입력되면, pop 연산을 수행한다.
4) 정답을 저장할 변수 sum을 0으로 초기화하고 선언한다.
5) 스택이 비어있지 않다면, 스택의 크기만큼 아래 연산을 수행한다.
- top 값을 sum에 더한다.
- pop 연산을 수행한다.
6) 최종적으로 저장된 sum값을 출력한 뒤, 실행 종료한다.
반응형
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <stack>
#include <string>
using namespace std;
//백준 10773번 코드
int main() {
stack<int> s;
int n, num;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num;
if (num != 0) {
s.push(num);
}
else {
s.pop();
}
}
int sum = 0;
int size = s.size();
if (!s.empty()) {
for (int i = 0; i < size; i++) {
sum += s.top();
s.pop();
}
}
cout << sum;
}
제출 결과
(2021.12.31 백준 10773번 문제 제출 결과)
반응형
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 10807번 개수 세기 (C언어) (0) | 2022.02.05 |
---|---|
[백준 BOJ] 10799번 쇠막대기 (C++/cpp) (0) | 2022.02.05 |
[백준 BOJ] 10718번 We love kriii (C언어) (0) | 2022.02.05 |
[백준 BOJ] 10250번 ACM 호텔 (C++/cpp) (0) | 2022.02.05 |
[백준 BOJ] 10172번 개 (C언어) (0) | 2022.02.04 |