728x90
728x90

스택 6

백준] 4949 - 균형잡힌 세상(ACM-ICPC Regionals)

시간 제한 : 1초메모리 제한 : 128MB 입력하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다.입력의 종료조건으로 맨 마지막에 점 하나(".")가 들어온다. 출력각 줄마다 해당 문자열이 균형을 이루고 있으면 "yes"를, 아니면 "no"를 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { string tmp; while (1) { getline(cin, tmp); if (tmp == ".") break; int len = tmp.length(); bool check = true; stack ..

백준] 2504 - 괄호의 값(KOI 2008 지역본선)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 괄호열을 나타내는 문자열(스트링)이 주어진다. 단 그 길이는 1 이상, 30 이하이다. 출력첫째 줄에 그 괄호열의 값을 나타내는 정수를 출력한다. 만일 입력이 올바르지 못한 괄호열이면 반드시 0을 출력해야 한다. 소스코드 #include #include #include using namespace std; int main(void) { char arr[32]; stack st; int tmp = 1, sum = 0; bool wrong = false; cin >> arr; for (int i = 0; arr[i]; i++) { if (arr[i] == '(') { tmp *= 2; st.push('('); } else if (arr[i] == '..

백준] 1668 - 트로피 진열

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 트로피의 개수 N (1 ≤ N ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 왼쪽의 트로피부터 차례대로 높이가 주어진다. 출력첫째 줄에 왼쪽에서 봤을 때 보이는 개수, 둘째 줄에 오른쪽에서 봤을 때 보이는 개수를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n, arr[50]; stack sl, sr; cin >> n; for (int i = 0; i > arr[i]; sl.push(arr[0]); for (int i = 1; i sl.top()) sl.push(arr[i]); sr.push(ar..

C, C++] 메모리 영역(Code, Data, Stack, Heap)

프로그램 실행 시 할당되는 메모리 영역은 Code, Data, Stack, Heap, 네 가지로 분류할 수 있는데, 이에 대한 이해가 아예 없는 상태에서도 자연스럽게 Stack, Heap에 대한 감이 잡히게 된다. 확실히 이들에 대해서 조금 정리해두는 것이 좋을 것 같아 글을 끄적여 놓는다. Code작성한 코드라고 보면 되며 프로그램 종료 시점까지 메모리에 적재됨. Data전역 변수, static 변수 등이 저장되는 영역으로 이 역시 프로그램 종료 시점까지 메모리에 적재됨. Stack자료구조를 접한 사람들이 아는 그 스택의 성격(LIFO)을 가지고 있음.함수 호출, 지역 변수, 매개 변수, 반환 값 등을 저장하며, 함수 종료 시점에 시스템에 반환됨.프로그램에서 사용하는 임시 메모리 영역으로, 컴파일 시점..

백준 알고리즘] 1874 : 스택 수열

시간 제한 : 2 초메모리 제한 : 128 MB 문제스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 먼저 들어간 자료가 제일 나중에 나오는 (FILO, first in last out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이 때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력첫 ..

Data Structure] 스택 클래스를 일반화한 제네릭 클래스

템플릿 이용해서 스택을 일반화해봤다. 클래스 활용도 연습을 해볼 겸, 템플릿 사용도 연습을 해볼 겸...다른 기능 없이 아주 일반적인 push, pop, 생성자만 구현했다.다음엔 리스트도 해볼 생각. #include using namespace std; template class Stack { int tos; T data[100]; public: Stack(); void push(T element); T pop(); }; template Stack::Stack() { tos = -1; } template void Stack::push(T element) { if (tos == 99) { cout

728x90