Queue를 구현해야 하는 문제들을 review해보는 시간을 가졌다.
문제 : [백준] 10845번
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class boj_6_10845 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력값 받기
StringBuilder sb = new StringBuilder();
//문자열을 이어붙이기 위해 사용
Queue<Integer> q = new LinkedList<Integer>();
//LinkedList를 이용한 queue구현
int b = 0;
int n = Integer.parseInt(br.readLine());
//받아 읽은 값을 정수형으로 변환. > 처음으로 읽은 N값이 됨.
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
//명령어를 읽음
switch (S) {
//조건에 따라 실행하는 코드 작성
case "push":
int num = Integer.parseInt(st.nextToken());
q.add(num);
b = num; //가장 최근에 저장된 값이 push를 통해 들어온 값이므로 그 값을 변수 b에 저장
break;
case "pop":
if (q.isEmpty()) {
sb.append("-1\n");
} else {
sb.append(q.remove() + "\n");
}
break;
case "size":
sb.append(q.size() + "\n");
break;
case "empty":
if (q.isEmpty()) sb.append("1\n");
else sb.append("0\n");
break;
case "front":
if (q.isEmpty()) sb.append("-1\n");
else sb.append(q.peek() + "\n");
break;
case "back":
if (q.isEmpty()) sb.append("-1\n");
else sb.append(b + "\n");
break;
}
}
System.out.println(sb);
}
}
출처 : https://velog.io/@kimmjieun/%EB%B0%B1%EC%A4%80-10845%EB%B2%88-%ED%81%90-Java-%EC%9E%90%EB%B0%94 를 참고하였습니다.
'JAVA' 카테고리의 다른 글
JAVA(2022.09.09) - Stack,Queue를 활용하는 사고 기르기2 (0) | 2022.09.09 |
---|---|
JAVA(2022.09.08) - Stack,Queue를 활용하는 사고 기르기 (0) | 2022.09.08 |
JAVA(2022.09.07) - math함수 (2) | 2022.09.07 |
JAVA(2022.08.17)- 사용자 정의 정렬 (0) | 2022.08.17 |
JAVA(2022.08.12)- Comparable, Comparator (0) | 2022.08.12 |