T_era
[JAVA] 백준 2164 : 카드2 (배열Queue) 본문
배열로 Queue를 구현해 작성해봤다.
하지만 시간초과로 나와서 원인을 찾아보니 배열로 만든 큐는 pop연산을 할때 비효율적이라 linked List를 사용해보라는 추천을 받았다.
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));
ArrayQueue queue = new ArrayQueue();
int num = Integer.parseInt(br.readLine());
for(int i = 1; i <= num; i++){
queue.queuePush(i);
}
while (queue.queueSize() != 1){
queue.queuePop();
queue.queuePush(queue.queuePop());
}
bw.write(String.valueOf(queue.queuePick()));
bw.flush();
bw.close();
br.close();
}
}
// 1. queue의 공백을 확인
// 2. queue가 가득 찼는지 확인
// 3. queue의 데이터의 갯수 확인
// 4. 선택
// 5. push
// 6. pull
class ArrayQueue{
final int MAX = 500000;
int first;
int last;
int[] queue;
public ArrayQueue(){
first = 0;
last = 0;
queue = new int[MAX];
}
public boolean queueEmpty(){
return first == last;
}
public boolean queueFull(){
if(last == MAX) return true;
else return false;
}
public int queueSize(){
return last - first;
}
public int queuePick(){
if(queueEmpty()) return -1;
return queue[first];
}
public void queuePush(int item){
if(queueFull()) return;
queue[last++] = item;
}
public int queuePop(){
if(queueEmpty()) return -1;
return queue[first++];
}
}'Programing > BaekJoon' 카테고리의 다른 글
| [JAVA] 백준 1966 : 프린터 큐 (0) | 2025.03.30 |
|---|---|
| [JAVA] 백준 2164 : 카드2 (LinkedList 구현) (0) | 2025.03.30 |
| [JAVA] 백준 1920 : 수찾기 (0) | 2025.03.30 |
| [JAVA] 백준 14500 : 테트로미노 (0) | 2025.03.30 |
| [JAVA] 백준 3085 : 사탕게임 (0) | 2025.03.29 |