Notice
Recent Posts
Recent Comments
Link
Dev.baelanche
[백준 2164] 카드2 본문
반응형
큐로 구현하는 문제이다.
1부터 n 까지 큐에 담고
- 첫번째 케이스에 pop 한다.
- 두번째 케이스에 pop 하고 pop 된 수를 push 한다.
위 두가지 케이스를 반복하여 큐에 노드가 1개 남을때 출력해주면 된다.
직접 구현한 큐를 썼다.
public class Main {
Node head;
Node tail;
int size = 0;
class Node {
Node prev;
Object value;
Node(Object value) {
this.value = value;
}
}
public void push(Object value) {
Node node = new Node(value);
if(size == 0) {
head = node;
tail = node;
}
tail.prev = node;
tail = node;
size++;
}
public Object pop() {
if(size == 0) return -1;
Node temp = head;
head = head.prev;
size--;
return temp.value;
}
public Object front() {
if(size == 0) return -1;
return head.value;
}
public Object back() {
if(size == 0) return -1;
return tail.value;
}
public int size() {
return size;
}
public boolean isEmpty() {
if(size == 0) return true;
return false;
}
public void clear() {
head = null;
size = 0;
}
public String toString() {
String str = "front [";
Node temp = head;
for(int i=0; i<size; i++) {
str += temp.value;
if(i != size -1)
str += ", ";
temp = temp.prev;
}
return str + "] rear";
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Main q = new Main();
for(int i=1; i<=n; i++)
q.push(i);
for(int i=0; !q.isEmpty(); i++) {
if(q.size() == 1) {
System.out.println(q.front());
break;
}
if(i%2==0) q.pop();
else {q.push(q.front()); q.pop();}
}
sc.close();
}
}
반응형
'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글
[백준 3034] 앵그리 창영 (0) | 2019.04.07 |
---|---|
[백준 1966] 프린터 큐 (0) | 2019.04.06 |
[백준 10845] 큐 (0) | 2019.04.06 |
[백준 9507] Generations of Tribbles (0) | 2019.04.06 |
[백준 2631] 줄세우기 (0) | 2019.04.06 |
Comments