티스토리 뷰
1) 생각
입력으로 주어지는 명령을 처리하는 스택을 구현하여라.
처음 생각
Java에서 제공해주는 Stack을 써서 풀어볼까 하다가 "구현하여라"라고 적혀있어서 직접 만들어 보았다.
2) 방안
1) Stack class와 inner class로 data class를 만들어서 push 명령어가 들어오면 해당 data 객체의 다음 객체로 이전 객체의 주소를 지정해준다. 코드로 보면 이해하기가 말보다 좋다.
2) Size에 대한 부분은 Stack Class의 Field 영역에 선언하여 push 명령일 때는 +1 pop 명령일 때는 -1 해줌으로서 간단히 하였다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static StringBuilder sb; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); sb = new StringBuilder(); Stack stack = new Stack(); int n = Integer.parseInt(br.readLine()); for(int i=0;i<n;i++) { StringTokenizer st = new StringTokenizer(br.readLine()); switch(st.nextToken()) { case "push": stack.push(Integer.parseInt(st.nextToken())); break; case "pop": sb.append(stack.pop()+"\n"); break; case "size": sb.append(stack.size()+"\n"); break; case "empty": sb.append(stack.empty()+"\n"); break; case "top": sb.append(stack.top()+"\n"); break; } } System.out.println(sb); } } class Stack{ private Value top = null; private int size; public void push(int n) { Value value = new Value(); value.n = n; value.next = top; top = value; size++; } public int top() { if(empty()==1) return -1; else return top.n; } public int pop() { if(empty()==1) return -1; int n = top.n; top = top.next; size--; return n; } public int size() { return size; } public int empty() { return size!=0?0:1; } static class Value{ private int n; private Value next; } } | cs |
'알고리즘 > 공부' 카테고리의 다른 글
[Java] 배열로 Stack을 구현해보자! (0) | 2019.02.26 |
---|---|
[Java] 배열로 Queue를 구현해보자! (0) | 2019.01.31 |
[Java] 다중 반복문에서 라벨(label)을 사용해보자 (0) | 2019.01.06 |
[Java] 비트 마스크에 대해서 알아보자 (0) | 2018.10.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday