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 |
Tags
- boj #c++
- firebase #파이어베이스
- 백준
- git #unity #깃허브
- Flutter
- flutter #todolist
- boj #baekjoon
- unity #2d-game #minigame #vscode
- flutter #상태관리
- 비주얼스튜디오 #코드스니펫
- 백준 #c++
- boj #baekjoon #c++
- 로컬저장소 #이름변경
- unity #2d-game
- flutter #firebase #플러터 #파이어베이스 #연동
- 백준 #boj #baekjoon
- flutter #git
- VS #비주얼스튜디오
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- 비주얼 스튜디오 #vs #visual studio
- 플러터 #flutter #restful #rest api
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- flutter #플러터
- flutter #app #취준
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- baekjoon #백준 #boj
- baekjoon #boj #c++
- flutter #깃
- flutter #플러터 #분석
- 백준 #boj
Archives
- Today
- Total
cococo-coding
[C++ 풀이] 10828번. 스택 본문
문제
풀이
stack에 대한 기본개념과 명령어를 string으로 받아 각 조건에 따라 분기해서 풀어준다.
문제에서 제시한 명령은 push X, pop, size, empty, top 으로 총 5가지이다.
이 명령을 문자열 string str; 로 받아 각각 처리해줄 것이다.
1. push X (데이터 삽입)
X를 num으로 입력받고 s.push(num) 처리를 한다.
2. pop (데이터 삭제)
스택이 비어있다면 ( s.empty() ), -1을 출력한다.
아니라면 가장 위의 데이터를 반환한 후에, 이 데이터를 삭제한다.
s.top() -> s. pop()
3. size (스택사이즈)
스택의 사이즈를 출력한다. s.size()
4. empty (스택 확인)
위 2번에서 스택이 비어있는지 확인할 때도 이용한 함수이다.
스택이 비어있다면 -1을, 아니라면 가장 윗층의 데이터를 출력한다.
s.empty()로 여부를 확인한다.
5. top(가장 위의 데이터 반환)
마찬가지로 스택이 비어있다면( s.empty() ), -1을 반환하고
아니라면 s.top()으로 최상위 데이터를 반환한다.
스택을 처음 이용하고, 기본 함수들을 활용해보기 좋은 문제이다.
코드
#include <iostream>
#include <stack>
using namespace std;
/*
1. n을 입력받는다.
2. n만큼 명령을 입력받는다..
3. 각 명령마다 출력을 한다.
*/
int main() {
//1
int n;
cin >> n;
//2
stack <int> s;
string str; //명령어 받을 변수
//3
while (n--) {
cin >> str;
if (str == "push") {
int num;
cin >> num;
s.push(num);
}
else if (str == "pop") {
if (s.empty()) cout << "-1" << '\n';
else {
cout << s.top() << '\n';
s.pop();
}
}
else if (str == "size") {
cout << s.size() << '\n';
}
else if (str == "empty") {
if (s.empty()) cout << "1" << '\n';
else cout << "0" << '\n';
}
else if (str == "top") {
if (s.empty()) cout << "-1" << '\n';
else cout << s.top() << '\n';
}
}
return 0;
}
'[BOJ] 코드 모음 > C++_learning 문제집' 카테고리의 다른 글
[C++ 풀이] 10866번. 덱 (1) | 2024.01.19 |
---|---|
[C++ 풀이] 10845번. 큐 (0) | 2024.01.19 |
[C++ 풀이] 2484번. 주사위 네개 (0) | 2024.01.18 |
[C++ 풀이] 5586번. JOI와 IOI (0) | 2024.01.17 |
[C++ 풀이] 2751번. 수 정렬하기 2 (0) | 2024.01.17 |