스택4 [Algorithm] Stack(스택) 스택이란? 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)이다. 자료를 넣는 것을 '밀어넣는다' 하여 푸쉬(push)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 팝(pop)이라고 하는데, 이때 꺼내지는 자료는 가장 최근에 푸쉬한 자료부터 나오게 된다. 즉, 나중에 넣은 값이 먼저 나오게 되는 것이다. 스택의 연산 (std::stack) push(element): top에 원소 추가 pop(): top에 있는 원소 삭제 top(): top에 있는 원소 반환 empty(): 스택이 비어 있을 때 true(1) 반환 size(): 스택 사이즈 반환 2024. 1. 5. [자료구조] 스택(Stack) 예제 스택의 응용괄호 검사괄호의 종류 : [], {}, ()조건1.왼쪽 괄호의 개수와 오른쪽 괄호의 개수가 같아야 한다.2.같은 괄호에서 왼쪽 괄호는 오른쪽 괄호보다 먼저 나와야 한다.3.괄호 사이에는 포함 관계만 존재한다. 알고리즘의 개요문자열에 있는 괄호를 차례대로 조사하면서 왼쪽 괄호를 만나면 스택에 삽입하고,오른쪽 괄호를 만나면 스택에서 top 괄호를 삭제한 후 오른쪽 괄호와 짝이 맞는지를 검사한다.이 때, 스택이 비어 있으면 조건 1 또는 조건 2 등을 위배하게 되고 괄호의 짝이 맞지 않으면 조건 3 등에 위배된다.마지막 괄호까지를 조사한 후에도 스택에 괄호가 남아 있으면 조건 1에 위배되므로 0(거짓)을 반환하고, 그렇지 않으면 1(참)을 반환한다.#include #include #include #.. 2022. 10. 19. [자료구조] 스택(Stack) 스택이란?스택은 쌓아놓은 더미라는 뜻으로, 가장 최근에 들어온 데이터가 가장 먼저 나가는 후입선출(LIFO:Last-In First-Out)의 형태이다. 스택의 연산push(): 스택에 데이터를 추가pop(): 스택에서 데이터를 삭제is_empty(s): 스택이 공백상태인지 검사is_full(s): 스택이 포화상태인지 검사create(): 스택을 생성 peek(s): 요소를 스택에서 삭제하지 않고 보기만 하는 연산배열을 이용한 스택1차원 배열 stack[]스택에서 가장 최근에 입력되었던 자료를 가리키는 top 변수¨가장 먼저 들어온 요소는 stack[0]에, 가장 최근에 들어온 요소는 stack[top]에 저장스택이 공백상태이면 top은 -1전역 변수로 구현하는 방법#include #include #de.. 2022. 10. 19. [Algorithm] 스택 백준 10799번 쇠막대기 | C++ ※ 10799 쇠막대기 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net #include #include using namespace std; int solution(const string& str) { stack st; int answer = 0; for (int i = 0; i < str.length(); i++) { if (str[i] == '(') { //여는 괄호이면 stack에 push st.push('('); } else { //닫는 괄호이면 .. 2022. 8. 26. 이전 1 다음