본문 바로가기

Java

배열로 Stack 구현해보기

반응형

자바로 스택을 구현해보았습니다!

 

import java.util.Scanner;

public class 스택 {
	
	private static int arr[] = new int[0];	
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		
		int n = sc.nextInt();
		
		for(int i=0; i<n; i++) {
			String S = sc.next();
			if(S.equals("push")) {
				int a = sc.nextInt();
				push(a);
			}
			else if(S.equals("pop")) {
				pop();
			}
			else if(S.equals("empty")) {
				empty();
			}
			else if(S.equals("top")) {
				top();
			}
			else if(S.equals("size")){
				size();
			}
			
		}
		
		for(int i=0; i<arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		
		sc.close();
		
		
		
	}
	
	public static void top() { // 제일 마지막에 들어간 변수 반환
		System.out.println(arr[arr.length-1]);
		
	}

	public static void size() { // 길이 반환
		System.out.println(arr.length);
	}
	
	public static void empty() {
		if(arr.length == 0)
			System.out.println(1);
		else {
			System.out.println(0);
		}
		
	}

	public static void push(int push) {
		int[] newArr = new int[arr.length+1];
		
		for(int i=0; i<arr.length; i++) {
			if(arr.length > 0)
				newArr[i] = arr[i]; // 이전 배열 복사
		}
		newArr[newArr.length-1] = push; // 마지막 인덱스 추가
		arr = newArr; // arr에 적용
	}
	
	public static void pop() {
		int[] newArr = new int[arr.length-1];
		for(int i=0; i<arr.length-1; i++) {
			newArr[i] = arr[i];
		}
		arr = newArr;
	}
	
}

실행결과

8번을 실행합니다.

1. push 1

  • [1]

2. push 2

  • [1, 2]

3. push 3

  • [1, 2, 3]

4. push 4

  • [1, 2, 3, 4]

5. pop

  • [1, 2, 3]

6. push 5

  • [1, 2, 3, 5]

7. push 6

  • [1, 2, 3, 5, 6]

8. pop

  • [1, 2, 3, 5]

 

 

'Java' 카테고리의 다른 글

[Java] Interface 정리(2)  (0) 2023.07.18
[Java] InterFace 정리(1)  (0) 2023.07.17
[Java] 자바 상속 정리  (0) 2023.07.14
[Java] foreach문 사용하기  (0) 2023.07.12
[Java] 접근 수준 지시자(Access-level Modifiers)  (0) 2023.07.03