백준 10845번: 큐 [큐][Queue][자료구조] -Java :: 매운코딩
728x90
300x250

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

자료구조 Queue 가 아닌 실제로 Class를 직접 만들어서

큐의 기본 메소드를 직접 구현해보는 문제.. 

 

 

<Java 코드>

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {

		System.setIn(new FileInputStream("Test.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());

		int N = Integer.parseInt(st.nextToken());

		MyQueue mq = new MyQueue();
		
		for (int tc = 0; tc < N; tc++) {
			st = new StringTokenizer(br.readLine());
			
			String cmd = st.nextToken();
			switch(cmd) {
			
			case "push": {
				int num = Integer.parseInt(st.nextToken());
				mq.push(num);
				break;
			}
			case "pop": {
				System.out.println(mq.pop());
				break;
			}
			case "size": {
				System.out.println(mq.size());
				break;
			}
			case "empty": {
				System.out.println(mq.empty());
				break;
			}
			case "front": {
				System.out.println(mq.front());
				break;
			}
			default: {
				//back 메소드
				System.out.println(mq.back());
				break;
			}
			}
		}
	}

	public static class MyQueue {
		int size;
		Node frontNode;
		Node backNode;

		MyQueue() {
			this.size = 0;
		}

		public void push(int x) {
			if (size == 0) {
				frontNode = new Node(x, null);
				backNode = frontNode;
			} else {
				Node newNode = new Node(x, null);
				backNode.next = newNode;
				backNode = newNode;
			}
			size++;
		}

		public int pop() {
			int res = -1;
			if (size > 0) {
				res = frontNode.val;
				frontNode = frontNode.next;
				if(frontNode == null) {
					backNode = null;
				}
				size--;
			}
			return res;
		}

		public int size() {
			return size;
		}
		
		public int empty() {
			if(size==0)
				return 1;
			else
				return 0;
		}
		
		public int front() {
			if(size==0)
				return -1;
			else 
				return frontNode.val;
		}
		
		public int back() {
			if(size==0)
				return -1;
			else 
				return backNode.val;
		}
	}

	public static class Node {
		int val;
		Node next;

		Node(int val, Node next) {
			this.val = val;
			this.next = next;
		}
	}
}

https://www.acmicpc.net/problem/10845

728x90

+ Recent posts