본 글은 본인 대학교와 비트교육센터가 진행한 SW몰입형 수업에서
실습한 내용을 중심으로 작성한 글입니다.
SW 몰입형 수업 #7.
동적 바인딩을 사용하여
스택, 큐 시스템의 추가/삭제를 간단하게 구현함
1. MyMemory Class
추상 클래스로 Stack과 Queue 클래스의 부모 클래스
각각의 배열 관리
abstract class MyMemory {
int []arr; // 크기가 5인 정수배열 선언
public MyMemory() {
arr = new int [5];
}
void push(int i, int num) {
arr[i] = num;
}
public abstract void pop(int i);
}
2. MyStack, MyQueue Class
스택과 큐의 pop(삭제) 구현
class MyStack extends MyMemory{
@Override
public void pop(int i) {
System.out.println("빼는 데이터 : " + arr[i-1]);
arr[i-1] = 0;
}
}
class MyQueue extends MyMemory{
@Override
public void pop(int i) {
System.out.println("빼는 데이터 : " + arr[0]);
for(int j = 0; j < i; j++) {
if(j < 4) {
arr[j] = arr[j+1];
}else {
arr[4] = 0;
}
}
}
}
3. Main Class
Stack, Queue 실행 프로그램 구현
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int select;
int stackCnt = 0;
int queueCnt = 0;
int num;
MyStack myStack = new MyStack();
MyQueue myQueue = new MyQueue();
MyMemory myMemory;
// 무한 반복
while(true) {
// 메뉴 (3번 누르면 프로그램 종료)
System.out.println("1. Stack \t 2. Queue \t 3. Exit");
select = sc.nextInt();
if(select == 1) {
while(true) {
myMemory = myStack;
System.out.println("1. push \t 2. pop \t 3. Exit");
select = sc.nextInt();
if(select == 1) {
System.out.println("추가할 숫자 입력 : ");
num = sc.nextInt();
myMemory.push(stackCnt, num);
stackCnt++;
}else if(select == 2) {
myMemory.pop(stackCnt);
stackCnt--;
}else if(select ==3) {
break;
}
}
}else if(select == 2) {
while(true) {
myMemory = myQueue;
System.out.println("1. push \t 2. pop \t 3. Exit");
select = sc.nextInt();
if(select == 1) {
System.out.println("추가할 숫자 입력 : ");
num = sc.nextInt();
myMemory.push(queueCnt, num);
queueCnt++;
}else if(select == 2) {
myMemory.pop(queueCnt);
queueCnt--;
}else if(select ==3) {
break;
}
}
}else if(select == 3) {
break;
}
}
}
}
'코딩테스트 > 프로그래밍 예제 풀이' 카테고리의 다른 글
| [Java] Inner Class 종류 (0) | 2023.07.23 |
|---|---|
| [Java] 학생 성적 처리 프로그램 (다수 클래스 이용) (0) | 2023.07.23 |
| [Java] 별 모양 문제 (0) | 2023.07.23 |
| [Java] 반복문 예제 풀이 (2문제) (0) | 2023.07.22 |
| [Java] 사칙연산 계산기 - 반복문 사용 (do-while) (0) | 2023.07.22 |