728x90
난이도 | Silver4 |
링크 | https://www.acmicpc.net/problem/18258 |
문제 사진.
풀이.
자료구조중 Queue를 구현하면 되는 문제
시간제한이 있는 문제이므로, Scanner/String에 더해서 방식으로 출력을 만들 경우 시간초과에 걸리기 쉽다.
소스코드.
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
Queue qu=new Queue(N);
StringBuilder sb=new StringBuilder();
for(int i=0;i<N;i++) {
String[] input=br.readLine().split(" ");
switch (input[0]) {
case "push":
qu.push(Integer.parseInt(input[1]));
break;
case "pop":
sb.append(qu.pop()).append("\n");
break;
case "size":
sb.append(qu.size()).append("\n");
break;
case "empty":
sb.append(qu.empty()).append("\n");
break;
case "front":
sb.append(qu.front()).append("\n");
break;
case "back":
sb.append(qu.back()).append("\n");
break;
}
}
System.out.println(sb.toString());
}
static class Queue {
int[] arr;
int start=0;
int end=0;
Queue(int N){
this.arr=new int[N+1];
}
void push(int X) {
arr[end++]=X;
}
int pop() {
if(start>=end) {
return -1;
}
return arr[start++];
}
int size() {
if(start>=end) {
return 0;
}
return end-start;
}
int empty() {
if(this.size()==0) {
return 1;
}
return 0;
}
int front() {
if(this.size()==0) {
return -1;
}
return arr[start];
}
int back() {
if(this.size()==0) {
return -1;
}
return arr[end-1];
}
}
후기.
STL을 사용하도 되지만, 이런 문제의 핵심은 구현을 한 번 해보는 것이라고 생각한다.
그건 그렇고 너무 쉬운문제만 푸는 것 같은데 난이도를 올려야겠다.
728x90
'알고리즘 > Backjoon' 카테고리의 다른 글
1986번 : 체스 (0) | 2022.03.02 |
---|---|
B16948 : 데스 나이트 (0) | 2022.02.23 |
B3085 : 사탕 게임 (0) | 2022.02.14 |
B18108: 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.02.12 |
5567번: 결혼식 (0) | 2020.02.23 |
댓글