일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 브루트포스
- 컴퓨터공학과
- 스택
- bfs
- 오에스
- 코딩
- Operating System
- OS
- DP
- 알고리즘
- coding
- vector
- 문제풀이
- Computer science
- 코테
- cs
- 오퍼레이팅시스템
- c++
- 정석학술정보관
- 구현
- 너비우선탐색
- 정석
- Stack
- 개발
- 백준
- 북리뷰
- 그래프
- 자료구조
- 컴공과
- 컴공
- Today
- Total
목록Stack (13)
Little Jay
stack 자료구조를 사용하면 쉽게 풀 수 있는 문제 문제를 풀다가 utility 헤더에 있는 make_pair을 처음에 이용했는데 이게 segmentation error를 발생시켰다 구글링을 해보니까 이게 허용되지 않은 메모리 영역에 접근을 시도하거나, 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 경우 발생한다고 한다. 왜 발생하는지는 모르겠지만,make_pair을 사용하는 것을 포기하고 대괄호로 묶에서 push하는 방법으로 하니까 맞았다.고수님들 계시면 이게 왜 발생하는지 알려주시면 너무 감사하겠습니다...... #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.t..
조금만 입체적으로 생각하면 되는 문제이다. stack의 선입선출의 구조를 생각하면 되는 문제인데, 단순히 마지막에 있는 막대기보다 큰 막대기를 세는 것이 아니라 막대기의 앞뒤를 비교하면 쉽게 풀 수 있다. #include #include using namespace std; int main() { int n; cin >> n; stack st; for (int i = 0; i > x; st.push(x); } int temp = st.top(); int count = 1; while (!st.empty()) { if (st.top() > temp) { temp = st.top(); count++; } st.pop(); } cout
stack 자료구조를 배웠으면 풀 수 있는 것 같다. 옛날 자료구조 족보를 보다가 이 문제에 대한 의사코드를 물어보는 문제를 본 적이 있다. 간단하게 ( 가 들어올때만 push 시켜주고 아닐때는 stack에서 pop을 진행해줘서 마지막에 stack에 남아있는 데이터의 여부에 따라 답을 출력하면 되는 문제 #include #include #include using namespace std; int main() { int testCase; cin >> testCase; for (int i = 0; i > s; for (int k = 0; k < s.length(); k++) { if (st.empty() || s[k] == '('..