[LIKELION] 220927 과제

고관운·2022년 9월 27일

1. 선택정렬 구현

public class selectionSort {
	
	public static int[] sort(int[] arr) {
		int min;
		int idx = 1;
		int minIdx = 0;
		int tmp;
		
		for(int i = 0; i < arr.length; i++){
			min = arr[i];
			for(int j = idx; j < arr.length; j++){
				if(min > arr[j]) {
					min = arr[j];
					minIdx = j;
				}
			}
			if(min != arr[i]) {
				tmp = arr[minIdx];
				arr[minIdx] = arr[i];
				arr[i] = tmp;
			}
			idx++;
		}
		
		return arr;
	}

	public static void printArray(int[] arr) {
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		int[] arr = {5, 1, 3, 8, 2, 7, 6};
		
		System.out.print("정렬 전 배열 : ");
		printArray(arr);
		int[] sortArr = sort(arr);
		System.out.print("정렬 후 배열 : ");
		printArray(sortArr);
	}

}

🟢 정렬 전과 정렬 후를 확인할 수 있도록 printArray함수를 따로 만들었음

2. Stack 기능 구현 (함수 5개는 인터페이스로 구현)

import java.util.Scanner;

interface PreStack {
	void pop();
	void push(char item);
	boolean isEmpty();
	void clear();
	void peek();
	void printStack();
}

class Stack implements PreStack{
	private int idx = 0;
	private int size;
	
	char[] arr;
	
	Stack(int n) {
		size = n;
		arr = new char[n];
	}

	@Override
	public void pop() {
		if(idx != 0) {
			System.out.print("삭제된 문자 : " + arr[idx-1]);
			System.out.println();
			arr[idx-1] = ' ';
			idx--;
		}
	}

	@Override
	public void push(char item) {
		System.out.print("입력된 문자 : " + item);
		System.out.println();
		if(idx == size) {
			System.out.println("가득 찼습니다.");
		}
		else {
			arr[idx] = item;
			idx++;
		}
	}

	@Override
	public boolean isEmpty() {
		if(idx == 0) {
			return true;
		}
		else {
			return false;
		}	
	}

	@Override
	public void clear() {
		arr = null;
		arr = new char[size];
		idx = 0;
		System.out.println("스택이 초기화 되었습니다.");
	}

	@Override
	public void peek() {
		if(idx > 0) {
			System.out.print("엿볼려는 문자 : " + arr[idx-1]);
			System.out.println();
		}
	}

	@Override
	public void printStack() {
		if(idx == 0) {
			System.out.println("Stack is empty!");
		} else {
			System.out.print("Stack elements : ");
			for(int i = 0; i < idx; i++) {
				System.out.print(arr[i] + " ");
			}
			System.out.println();
		}
	}
}

public class stackTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("스택 사이즈를 입력하시오.");
		int stackSize = sc.nextInt() ;
		
		Stack stack = new Stack(stackSize);

		stack.push('A');
		stack.printStack();

		stack.push('B');
		stack.printStack();

		stack.push('C');
		stack.printStack();

		stack.pop();
		stack.printStack();

		stack.pop();
		stack.printStack();

		stack.peek();
		stack.printStack();

		stack.clear();
		stack.printStack();
	}
}

🟢 PreStack interface를 만들어 printStack 포함 총 6개의 함수를 구현함

0개의 댓글