스택
[백준 4949번-파이썬] 균형잡힌 세상
http://acmicpc.net/problem/4949 {코드} while True: s = input() if s == '.': break st = [] for i in s: if i not in '()[]': continue if i == '(' or i == '[': st.append(i) elif (i == ')' and st and st[-1] == '(') or (i == ']' and st and st[-1] == '['): st.pop() else: st.append(0) break print('no' if st else 'yes') {설명} 이 문제는 간단한 스택 문제로 뭘 스택에 넣고 뭘 무시하면 되는지 파악하면 간단히 풀 수 있는 문제입니다. 먼저 문자열을 입력받은 후 하나씩 돌면서..
[백준 1874번-C++] 스택 수열
http://acmicpc.net/problem/1874 {코드} #include #include using namespace std; int main() { int n, num, cur = 1; stack s; string ans = ""; scanf("%d", &n); for (int i = 0; i = cur) { while (num + 1 != cur) { s.push(cur++); ans += "+\n"; } s.pop(); ans += "-\n"; } else { if (s.top() == num) { s.pop(); ans += "-\n"; } else { ans = "NO"; break; } } } cout
[알고리즘&자료구조] 스택 - C++/파이썬
스택이란? 먼저 들어간 원소가 나중에 나오는 자료구조(Last in First out-LIFO) 위의 그림과 같이 1->2->3의 순서로 들어가지만 나올 때는 3->2->1의 순서로 나온다. 스택을 생각할 때 엘레베이터를 생각하면 먼저 들어간 사람이 뒤로 가게 되고 마지막에 들어온 사람이 문과 가장 가까이 서게 된다고 생각하면 된다. 아니면 뚜껑이 위에 하나만 있는 용기도 마지막에 넣은 것들이 가장 먼저 나오게 된다. *스택은 맨 위의 원소만을 고려하기 때문에 그 외의 다른 원소들은 맨 위로 오기 전까지는 그 값을 알 수 없다. 스택 메소드 스택의 메소드로는 다음과 같은 것들이 있다: pop - 스택의 맨 위에 있는(마지막으로 들어온) 원소를 삭제함 push - 스택에 새로운 원소를 추가함 isEmpty..
[백준 9012번-C++] 괄호
http://acmicpc.net/problem/9012 {코드} #include #include #include using namespace std; int main() { int n; string s, ans = ""; stack st; cin >> n; while (n--) { cin >> s; stack st; for (const char &c : s) { if (c == '(') { st.push(c); } else { if (!st.empty()) { st.pop(); } else { st.push('('); break; } } } if (!st.empty()) { ans += "NO\n"; } else { ans += "YES\n"; } } cout
[백준 10828번 - C++] 스택
http://acmicpc.net/problem/10828 {코드} #include #include #include using namespace std; int main() { stack s; int n, tmp; string st; cin >> n; while (n--) { cin >> st; if (st == "push") { cin >> tmp; s.push(tmp); } else if (st == "top") { if (!s.empty()) { cout