Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DP
- 이분탐색
- 베타락
- prg패턴
- expired key
- 타임아웃
- java
- 다중 서버
- queue
- 이진탐색
- session인증
- 외부 서비스 장애
- 벌크헤드패턴
- 캐시 스탬피드
- thundering herd
- 알고리즘
- Stack
- Entity Manager
- BFS
- id생성
- 비관적 락
- 예외처리
- ddl-auto
- 슬라이스 테스트
- 자바
- 백준
- 낙관적 락
- JPA
- 스택
- 트라이 자료구조
Archives
- Today
- Total
Coding 01
백준 [18258]번: 큐 2 ( Java ) 본문
https://www.acmicpc.net/problem/18258 // 문제링크
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
개발환경은 eclipse를 사용했습니다.
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Deque<Integer> queue = new LinkedList<>();
int n = Integer.parseInt(br.readLine());
StringTokenizer command;
while(n>0)
{
command = new StringTokenizer(br.readLine()," ");
switch(command.nextToken())
{
case "push" :
{
int num = Integer.parseInt(command.nextToken());
queue.offer(num);
break;
}
case "pop" :
{
Integer t = queue.poll();
if(t == null)
{
sb.append(-1+"\n");
}
else
{
sb.append(t+"\n");
}
break;
}
case "size" :
{
sb.append(queue.size()+"\n");
break;
}
case "empty" :
{
if(queue.isEmpty())
{
sb.append(1+"\n");
}
else
{
sb.append(0+"\n");
}
break;
}
case "front" :
{
Integer t = queue.peek();
if(t == null)
{
sb.append(-1+"\n");
}
else
{
sb.append(t+"\n");
}
break;
}
case "back" :
{
Integer t = queue.peekLast();
if(t == null)
{
sb.append(-1+"\n");
}
else
{
sb.append(t+"\n");
}
break;
}
}
n--;
}
System.out.println(sb);
}
}
큐 문제를 처음 풀어보았다.
큐에는 들어온 값들 중 가장 마지막값을 반환하는 메서드가 없어서 덱으로 풀었다.
큐를 몰라서 구글링하면서 큐에 대해 알아가면서 풀었던 것 같다.
stack과 큐에서 사용하는 메서드가 달라서 기억해야겠다고 생각했다.
문제를 풀면서 한번 틀렸었는데 poll()메소드를 사용할 때 큐에 들어있는 메서드가 없을 경우에는 -1을 반환해야 하는 예외처리를 해야 되는데 정답과 달리
if(queue.poll() == null)
{
~~
}
else
{
sb.append(queue.poll());
}
해서 틀렸었다.
별 생각없이 하다 틀려서 앞으로 기억에 남을 것 같다.
그리고 null 값일 경우 Integer로 받는데 이게 처음에 int형으로 받았다가 오류가 나서 Integer와 int의 차이도 알게 되었다
자세한 건 더 공부해야겠지만 기억에 남는 건
int 자료형은
산술연산이 가능하고
null 초기화가 불가능하다
Integer 래퍼 클래스
null 값을 처리가능하다
이 정도이다.
'백준' 카테고리의 다른 글
백준 [1021번]: 회전하는 큐 ( Java ) (0) | 2023.02.14 |
---|---|
백준 [10866]번: 덱 ( Java ) (0) | 2023.02.13 |
백준 [11866]번: 요세푸스 문제 0 ( Java ) (0) | 2023.02.13 |
백준 [2164]번: 카드2 ( Java ) (0) | 2023.02.12 |
백준 [1874]번: 스택 수열 (Java) (0) | 2023.02.12 |