본문 바로가기
(Pilot) 탑기공/소프트웨어 개발

스택(Stack) - "스리포 3!4!"

by 두음달인 2022. 12. 15.
반응형


한번 보면 절대 잃어버리지 않을 두음을 만들면 희열을 느낍니다. 

 

룰라의 3!4!를 아시나요?

 

스택(Stack)의 핵심 특징은 LIFO(리포, Last In, First Out)입니다.

 

스택(Stack)
LIFO
Last In, First Out

스택(Stack)

 

선형 자료구조의 하나로 데이터가 입력된 순서로 기억공간에 저장되어 출력 시
가장 나중에 쌓인 데이터가 가장 먼저 출력을 하게 되는 자료 구조

 

스택의 개념도

 

출처 : 탑싯 에센스

 

스택의 연산 종류

 

연산 종류 설명
top() 스택의 맨 위에 있는 데이터 값을 반환한다
push() 스택에 데이터를 삽입한다.
pop() 스택에서 데이터를 삭제하여 반환한다.
isempty() 스택에 원소가 없으면 true 값을 반환하고 있으면 false 값을 반환한다.
isfull() 스택에 원소가 없으면 false 값을 반환하고 있으면 true 값을 반환한다.

 

기출 문제

 

다소 어렵겠지만, 스택 문제는 Pseudo Code 작성하는 수준까지는 알고 있어야 합니다.

 

(관리 122-2-6)
6. 스택(Stack)의 개념을 설명하고, 아래의 조건을 만족하는 스택의 작동 알고리즘을 작성하시오.
(K : 스택의 크기, Top : 스택 포인터, S : 스택의 이름)

가. 스택(S)의 스택 포인터(Top)를 1 증가시킨다. 
스택 포인터가 스택의 크기(K) 보다 크면 Overflow 처리한다.
그렇지 않으면 Item이 가지고 있는 값을 스택의 Top 위치에 삽입한다.

나. 스택 포인터가 0이면 스택의 바닥이며
더 이상 삭제할 자료가 없으므로 Underflow 처리한다.
그렇지 않으면 Top 위치에 있는 값을 Item으로 옮기고
스택 포인터를 1 감소시킨다.

 

예전에는 개인적으로 시험 때문에 코딩을 조금 했었는데,

근래 전혀 하지 않다 보니 자신은 없네요.

 

나중에 기회 될 때 다시 한번 시작해 보는 것으로 하고.

우선 Pseudo Code로서 단순 참고만 하시기 바랍니다.

 

#include <stdio.h>
#define K 10

int S[K];
int Top = -1

void push (int item) {
	Top++;
	if ( isFull() ) { // Top+1 == K
		// overflow
		return;
	}
	S[Top] = item;
}

 

#include <stdio.h>
#define K 10

int S[K];
int Top = -1

void pop (int item) {
	if ( isEmpty() ) { // Top == -1
    	// underflow
    	return;
    }
    Item = S[Top];
    Top--;
}

 

행복한 일상 되세요.

 

PS. 이런 문제는 Pseudo Code 작성하면 슈퍼 고득점 나옵니다. 

개인적으로 준비하실 생각이라면 GeeksforGeeks, 백준 온라인 저지 등 한번 보시길 바랍니다.

 

참고 자료

 

탑싯 에센스 - 소프트웨어 개발

 

GeeksforGeeks | A computer science portal for geeks

 

GeeksforGeeks | A computer science portal for geeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

반응형

'(Pilot) 탑기공 > 소프트웨어 개발' 카테고리의 다른 글

트리(Tree) 자료구조  (0) 2022.12.18
큐(Queue) - "큐피포"  (0) 2022.12.16
[탑기공] 역공학  (0) 2022.12.14
[탑기공] 소프트웨어 재사용  (0) 2022.12.13
[탑기공] 04. 애자일 개발 방법론  (0) 2022.12.12

댓글