Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

체대출신 코더의 개발자 성장기

상자에서 물건을 꺼내보자! - Stack 본문

CodeStates/Datastructure

상자에서 물건을 꺼내보자! - Stack

미토콘크리트 2019. 5. 29. 14:40

자료구조들 중 가장 많이 접하는 Stack에 대해서 알아보자!

현실 세계에서의 stack

1. Stack의 정의

 Stack은 간단히 말하면 데이터들이 담겨있는 상자이다.

 단, 그 상자는 밑이 막혀있기때문에 우리는 상자 맨 밑의 데이터에 접근하기 매우 힘들다.

 일일히 데이터들을 다 꺼내야 하기 때문이다! 

 

데이터 상자

2. Stack의 특징

- 선입후출 (First In Last Out)

  데이터가 Stack에 담겨있을 땐, 밑이 막힌 상자에 담겨있는 것과 같기 때문에

  Stack에서 데이터를 다루는 것은 '맨 위'의 데이터에서만 가능하다.

 

  아래의 데이터를 보고싶다면?? 

  기존에 맨 위에 위치해 있던 데이터를 꺼내거나 삭제한 뒤, 보면 된다.

 

3. 왜 사용할까?

 - 쉽다!

   우리가 프로그래밍을 하면서 흔히 접하는 개념인 배열이 Stack과 유사하다.

   우리가 흔히 알고 있던 Array메소드인 pop과 push가 Stack에서 왔다면 믿겠는가?!!?

   이렇듯 Stack은 굉장히 단순한 구조를 지니고 있고 접하기도 쉬운 특징 때문에 다루기가 쉽다.

 

 - 참조지역성 우수

  참조지역성이란 '한 번 참조된 곳은 또 참조될 확률이 굉장히 높아지는 성질'을 뜻하는데

  이는 사람들이 데이터를 다룰때 예전에 들어왔던 자료들 보다는

  최근에 들어왔던 데이터에 더 빈번하게 접근한다는 특성을 보인다는 것을 알게 된다면

  왜 Stack이 유용한지를 이해할 수 있게 된다.

 

  Stack에서는 맨 위의 자료가 최신이며, 맨 위의 자료만 다룰 수 있기 때문에 가장 최신의 자료에 

  가장 빠르게 접근할 수 있는 방법중에 하나 일 것이다!

 

4. 의사코드로 Stack의 기능을 구현해보기

 - push

   맨 위에 최신의 정보를 넣을 때 사용하는 것이다.

   

   의사코드 

   // 1. 기존 데이터의 맨 마지막에 새로운 데이터를 추가 한다. 

Push

 

 - pop

   최신의 정보를 뺄 때 사용한다. 단, 바로 삭제시키는 것 이 아니라, 쓰고나서(!) 지운다.

   그렇기 때문에 실제로 js통해 구현하면 삭제시킬 데이터가 출력되고 지워지는 것을 확인할 수 있다.

 

  의사 코드

 // 1. 데이터의 맨 마지막에있던 데이터를 삭제해준다.

 

pop

 

 - peek(top)

   가장 상단에있는 정보를 확인'만' 할 때 사용한다. 

    pop과의 차이점은 pop은 데이터에 영향을 주는 반면, peek은 데이터에 영향을 주지않고 확인'만' 한다는 점이다. 

    

   의사 코드

   //1. 데이터의 맨 처음 인자를 출력만 해준다.    

 

 - empty

  Stack이 비어있는지 검사한다. 

  비어있다면 true, 아니라면 false를 출력해준다.

 

 의사 코드 

 //length를 이용해 데이터목록이 비어있는지 아닌지 판별해준다. 

empty

 

 - size

   Stack의 크기를 출력한다.

   배열의 length와 비슷한 기능을 한다고 보면 된다.

 

  //length를 이용해 데이터의크기를 판별해준다.    

Comments