Algorithm - Stack and Queue CodingTest Tip

  • Java로 코딩테스트를 준비하며 부족한 부분을 공부하기 위해 정리하였음.
  • 코딩테스트 Stack 과 Queue와 관련된 정리내용임.

Stack

  • Stack 의 주요 메서드

    • init(): 스택을 초기화한다.

    • isEmpty(): 스택이 비어있으면 true를 아니면 false를 반환한다.

    • isFull(): 스택이 가득 차 있으면 true를 아니면 false를 반환한다.

    • size(): 스택 내의 모든 요소들의 개수를 반환한다.

    • push(x): 스택 맨 위에 있는 요소를 삭제하고 반환한다.

    • pop(): 스택 맨 위에 있는 요소를 삭제하고 반환한다.

    • peek(): 스택 맨 위에 있는 요소를 삭제하지 않고 반환한다.

  • 후위식 계산법

    • 숫자를 넣다가, 연산식이 들어오면 2개를 pop 하여 계산하고, 다시 스택에 담는다.

    • 이 때 먼저 pop 된게 rt이고, 그 다음에 pop 된게 lt이다. 그래서 lt (연산) rt 를 해줘야 한다.

    • 또한 숫자가 char 형으로 들어와있기 때문에 isDigit(c) 이후, 아스키코드이므로 -48을 해줘야 한다.

     public static int postfix(String str) {
         Stack<Integer> stack = new Stack<>();
         for ( char c : str.toCharArray() ) {
             if ( Character.isDigit(c) ) {
                 stack.push((int)c -48);
             } else {
                 int rt = stack.pop();
                 int lt = stack.pop();
                 if ( c == '+' ) {
                     stack.push(lt + rt);
                 } else if ( c == '-' ) {
                     stack.push(lt - rt);
                 } else if ( c == '*' ) {
                     stack.push(lt * rt);
                 } else if ( c == '/' ) {
                     stack.push(lt / rt);
                 }
             }
         }
         return stack.get(0);
     }
    



Queue

  • Queue 는 일반적으로 LinkedList<> 의 형식으로 구현한다.

  • 주요 메서드는 다음과 같다.

    • add(n) : n을 추가한다. 성공 시 true를 반환하고 큐가 꽉 차면 예외를 반환한다.

    • offer(n) : n을 추가한다.성공 시 true를 반환하고 큐가 꽉 차면 false를 반환한다.

    • remove() : 맨 앞의 value를 삭제하고 반환한다. 반환할 게 없으면 예외를 반환한다.

    • remove(n) : 해당 큐에 n가 있을 시 삭제하고 true를 반환한다. 없으면 false를 반환한다.

    • poll(); : 맨 앞의 value를 삭제하고 반환한다. 없으면 null을 반환한다.

    • element() : 삭제하지 않고 맨 앞의 value를 반환한다. 없으면 예외가 발생한다.

    • peek() : 삭제하지 않고 맨 앞의 value를 반환한다. 없으면 null을 반환한다.

    • clear(); 큐 초기화

    • size(); 큐 크기 반환

    • contains(n) : 큐에 n이 있는지 없는지 확인해서 삭제는 하지 않고 true, false로 반환한다.

    • isEmpty() : true false를 통해 해당 큐가 비어있는지 아닌지를 알려준다.






results matching ""

    No results matching ""