02. 스택 구현하기

박해인·2024년 1월 14일
0

스택의 특징

  1. 맨 마지막 위치(top)에서만 자료를 추가,삭제, 꺼내올 수 있음 ( 중간의 자료를 꺼낼 수 없음)
  1. Last In First Out ( 후입선출 ) 구조
  1. 택배 상자가 쌓여있는 모양
  1. 가장 최근의 자료를 찾아오거나 게임에서 히스토리를 유지하고 이를 무를때 사용할 수 있음
  1. 함수의 메모리는 호출 순서에 따른 stack 구조
  • jdk 클래스 : Stack
import array.MyArray;

public class MyArrayStack {

	int top;
	MyArray arrayStack; 
	
	public MyArrayStack()
	{
		top = 0;
		arrayStack = new MyArray();
	}
	
	public MyArrayStack(int size)
	{
		arrayStack = new MyArray(size);
	}
	
    //데이터 넣기
	public void push(int data)
	{
		if(isFull()){
			System.out.println("stack is full");
			return;
		}
		
		arrayStack.addElement(data);
		top++;
	}
	
    //데이터 빼기
	public int pop()
	{
		if (top == 0){
			System.out.println("stack is empty");
			return MyArray.ERROR_NUM;
		}
		return arrayStack.removeElement(--top);
		
	}
	
    //맨 위 데이터 확인하기
	public int peek()
	{
		if (top == 0){
			System.out.println("stack is empty");
			return MyArray.ERROR_NUM;
		}
		return arrayStack.getElement(top-1);
	}
	
    //스택 사이즈 확인하기
	public int getSize()
	{
		return top;
	}
	
	public boolean isFull()
	{
		if(top == arrayStack.ARRAY_SIZE){
			return true;
		}
		else return false;
	}
	
    //스택이 비었는지 아닌지 살펴보기
	public boolean isEmpty()
	{
		if (top == 0){
			return true;
		}
		else return false;
	}
	
    //스택 전부 출력하기 (pop아님)
	public void printAll()
	{
		arrayStack.printAll();
	}
}

스택문제

LV2.주식가격

class Solution {
    public int[] solution(int[] prices) {
        int len = prices.length;
        int[] answer = new int[len];
        int i, j;
        for (i = 0; i < len; i++) {
            for (j = i + 1; j < len; j++) {
                answer[i]++;
                if (prices[i] > prices[j])
                    break;
            }
        }
        return answer;
    }
}
profile
갓생살고싶어라

0개의 댓글