yjdat 2022. 10. 6. 09:14

πŸ“„ λͺ©μ°¨

❓ Stack μ΄λž€ ❓ 

Stack μ£Όμš” λ™μž‘

μ»΄ν“¨ν„°μ—μ„œ Stack μ‹€μ‚¬μš© 예제

Stack κ΅¬ν˜„


 

❓ Stack μ΄λž€ ❓

μŠ€νƒμ€ ν•œ μͺ½ λμ—μ„œλ§Œ 자료λ₯Ό λ„£κ±°λ‚˜ λΊ„ 수 μžˆλŠ” μ„ ν˜•μ  자료ꡬ쑰(LIFO - Last In First Out)으둜 λ˜μ–΄ μžˆλ‹€. 자료λ₯Ό λ„£λŠ” 것을 'λ°€μ–΄λ„£λŠ”λ‹€' ν•˜μ—¬ ν‘Έμ‰¬(push)라고 ν•˜κ³  λ°˜λŒ€λ‘œ λ„£μ–΄λ‘” 자료λ₯Ό κΊΌλ‚΄λŠ” 것을 ‘λ‹ΉκΈ΄λ‹€’ 의 νŒ(pop)이라고 ν•˜λŠ”λ°, 이 λ•Œ κΊΌλ‚΄μ§€λŠ” μžλ£ŒλŠ” κ°€μž₯ μ΅œκ·Όμ— ν‘Έμ‰¬ν•œ μžλ£ŒλΆ€ν„° λ‚˜μ˜€κ²Œ λœλ‹€. 이처럼 ‘λ‚˜μ€‘μ— λ„£λŠ” 값이 λ¨Όμ € λ‚˜μ˜€λŠ” 것’ 을 ‘LIFO’ ꡬ쑰라고 ν•œλ‹€.

 

πŸ”Ά Stack μ£Όμš” λ™μž‘

  • pop( ) : μŠ€νƒμ—μ„œ κ°€μž₯ μœ„μ— μžˆλŠ” ν•­λͺ©μ„ μ œκ±°ν•œλ‹€.
  • push(item) : item ν•˜λ‚˜λ₯Ό μŠ€νƒμ˜ κ°€μž₯ μœ— 뢀뢄에 μΆ”κ°€ν•œλ‹€.
  • peek( ) : μŠ€νƒμ˜ κ°€μž₯ μœ„μ— μžˆλŠ” ν•­λͺ©μ„ λ°˜ν™˜ν•œλ‹€.
  • empty( ) : μŠ€νƒμ΄ λΉ„μ–΄ μžˆμ„ λ•Œμ— trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

좜처 : https://hanamon.kr/자료ꡬ쑰-stack-μŠ€νƒ/

 

πŸ”Ά μ»΄ν“¨ν„°μ—μ„œ Stack의 μ‹€μ‚¬μš© 예제

  • λŒ€ν‘œμ μΈ μ˜ˆμ‹œλ‘œλŠ” λΈŒλΌμš°μ €μ˜ λ’€λ‘œ κ°€κΈ°, μ•žμœΌλ‘œ κ°€κΈ° κΈ°λŠ₯을 κ΅¬ν˜„ν•  λ•Œ Stack이 ν™œμš©λœλ‹€.
  • λΈŒλΌμš°μ €μ—μ„œ 자료ꡬ쑰 Stack이 μ‚¬μš©λ  λ•Œμ—λŠ” λ‹€μŒκ³Ό 같은 μˆœμ„œλ₯Ό κ±°μΉœλ‹€.
    1. μƒˆλ‘œμš΄ νŽ˜μ΄μ§€λ‘œ 접속할 λ•Œ, ν˜„μž¬ νŽ˜μ΄μ§€λ₯Ό Prev Stack에 λ³΄κ΄€ν•œλ‹€.
    2. λ’€λ‘œ κ°€κΈ° λ²„νŠΌμ„ 눌러 이전 νŽ˜μ΄μ§€λ‘œ λŒμ•„κ°ˆ λ•Œμ—λŠ”, ν˜„μž¬ νŽ˜μ΄μ§€λ₯Ό Next Stack에 λ³΄κ΄€ν•˜κ³  Prev Stack에 κ°€μž₯ λ‚˜μ€‘μ— λ³΄κ΄€λœ νŽ˜μ΄μ§€λ₯Ό ν˜„μž¬ νŽ˜μ΄μ§€λ‘œ κ°€μ Έμ˜¨λ‹€.
    3. μ•žμœΌλ‘œ κ°€κΈ° λ²„νŠΌμ„ 눌러 μ•žμ„œ λ°©λ¬Έν•œ νŽ˜μ΄μ§€λ‘œ 이동을 원할 λ•Œμ—λŠ”, Next Stack의 κ°€μž₯ λ§ˆμ§€λ§‰μœΌλ‘œ λ³΄κ΄€λœ νŽ˜μ΄μ§€λ₯Ό κ°€μ Έμ˜¨λ‹€.
    4. λ§ˆμ§€λ§‰μœΌλ‘œ ν˜„μž¬ νŽ˜μ΄μ§€λ₯Ό Prev Stack에 λ³΄κ΄€ν•œλ‹€.

 

πŸ”Ά Stack κ΅¬ν˜„

Javaμ—μ„œ 기본적으둜 Stack 클래슀λ₯Ό μ§€μ›ν•΄μ€λ‹ˆλ‹€. λ¬Όλ‘  직접 λ§Œλ“€μ€„λ„ μ•Œμ•„μ•Ό ν•˜μ§€λ§Œ λ¨Όμ € Javaμ—μ„œ μ§€μ›ν•˜λŠ” κΈ°λŠ₯을 ν™œμš©ν•΄λ³΄κ³ μž ν•©λ‹ˆλ‹€.

import java.util.Stack;

class Main {
  public static void main(String[] args){
    Stack<Integer> stack = new Stack<>();

    for(int i = 1; i<=5; i++){
      stack.push(i);
      System.out.println(stack.peek());
    }

    stack.pop();
    System.out.println("Pop()");
    System.out.println(stack.peek());
    System.out.println(stack.search(3));
    System.out.println(stack.empty());
  }
  
}

 

 


reference

https://hanamon.kr/

 

개발자의 μž‘μ—…κ³Ό 기둝 - ν•˜λ‚˜λͺ¬

ν•˜λ‚˜λͺ¬ 개발자의 μž‘μ—…κ³Ό 기둝 | μ†Œν”„νŠΈμ›¨μ–΄ μ—”μ§€λ‹ˆμ–΄, ν”„λ‘ νŠΈμ—”λ“œ, λ°±μ—”λ“œ, ν”„λ‘œκ·Έλž˜λ¨Έ, μ›Ή ν”„λ‘œκ·Έλž˜λ° 포트폴리였, 기술 λΈ”λ‘œκ·Έ

hanamon.kr

 

https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D 

 

μŠ€νƒ - μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전

μœ„ν‚€λ°±κ³Ό, 우리 λͺ¨λ‘μ˜ 백과사전. μŠ€νƒ(stack)은 μ œν•œμ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλŠ” λ‚˜μ—΄ ꡬ쑰이닀. κ·Έ μ ‘κ·Ό 방법은 μ–Έμ œλ‚˜ λͺ©λ‘μ˜ λμ—μ„œλ§Œ μΌμ–΄λ‚œλ‹€. 끝먼저내기 λͺ©λ‘(Pushdown list)이라고도 ν•œλ‹€. μŠ€νƒμ€

ko.wikipedia.org

 

https://mungto.tistory.com/125 

 

Stack μ΄λž€?(κ°œλ…, λ™μž‘, κ΅¬ν˜„)

μŠ€νƒμ΄λž€? μ„ ν˜•μ  자료ꡬ쑰이며 데이터λ₯Ό μ‚½μž…μ‹œ 뒀에 λˆ„μ λ©° 데이터λ₯Ό κΊΌλ‚Όλ•ŒλŠ” λ’€μ—μ„œλΆ€ν„° κΊΌλ‚΄λŠ” μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. λ‚˜μ€‘μ— λ“€μ–΄μ˜¨ 데이터가 λ¨Όμ € λ‚˜κ°„λ‹€κ³  ν•˜μ—¬ Last Input First Out μ΄λΌν•˜μ—¬ LIFO

mungto.tistory.com