T_era
[JAVA] 백준 2164 : 카드2 (LinkedList 구현) 본문
배열을 사용하지않고 LinkedList를 구현해서 Queue를 작동해봤다
잘된다^^
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
NodeManager nodeManager = new NodeManager();
int num = Integer.parseInt(br.readLine());
for (int i = 1; i <= num; i++) { // num까지 push해야합니다.
nodeManager.push(i);
}
while (nodeManager.getSize() > 1) {
nodeManager.pop();
nodeManager.push(nodeManager.select().getValue());
nodeManager.pop();
}
bw.write(String.valueOf(nodeManager.select().getValue()));
bw.flush();
bw.close();
br.close();
}
}
class QueueNode {
int value;
QueueNode node;
public QueueNode(int value) {
this.value = value;
node = null;
}
public int getValue() {
return value;
}
public QueueNode getNextNode() {
return node;
}
public void setNextNode(QueueNode node) {
this.node = node;
}
}
class NodeManager {
QueueNode head, tail;
int size;
public NodeManager() {
head = tail = null;
size = 0;
}
public boolean isEmpty() {
return head == null && tail == null;
}
public void push(int value) {
QueueNode queueNode = new QueueNode(value);
if (isEmpty()) {
head = tail = queueNode;
} else {
head.setNextNode(queueNode);
head = queueNode;
}
size++;
}
public QueueNode pop() {
if (isEmpty()) {
System.out.println("Queue is Empty");
return null;
} else {
QueueNode popNode = tail;
tail = tail.getNextNode();
size--;
return popNode;
}
}
public QueueNode select() {
if (isEmpty()) {
System.out.println("Queue is Empty");
return null;
} else {
return tail;
}
}
public int getSize() {
return size;
}
}
'Programing > BaekJoon' 카테고리의 다른 글
| [JAVA] 백준 11866 : 요세푸스 문제 (0) | 2025.03.30 |
|---|---|
| [JAVA] 백준 1966 : 프린터 큐 (0) | 2025.03.30 |
| [JAVA] 백준 2164 : 카드2 (배열Queue) (0) | 2025.03.30 |
| [JAVA] 백준 1920 : 수찾기 (0) | 2025.03.30 |
| [JAVA] 백준 14500 : 테트로미노 (0) | 2025.03.30 |