01-10 04:27
Recent Posts
Recent Comments
관리 메뉴

miinsun

[BAEKJOON] λ°±μ€€ μŠ€νƒ/큐10845 :: 큐 JAVA λ³Έλ¬Έ

Algorithm/Baekjoon

[BAEKJOON] λ°±μ€€ μŠ€νƒ/큐10845 :: 큐 JAVA

miinsun 2022. 3. 14. 22:55

 

πŸ’¬  문제 μ„€λͺ…

μ •μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” 큐λ₯Ό κ΅¬ν˜„ν•œ λ‹€μŒ, μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” λͺ…령을 μ²˜λ¦¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.
λͺ…령은 총 μ—¬μ„― 가지이닀.

* push X: μ •μˆ˜ Xλ₯Ό 큐에 λ„£λŠ” 연산이닀.
* pop: νμ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό λΉΌκ³ , κ·Έ 수λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
* size: 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.
* empty: 큐가 λΉ„μ–΄μžˆμœΌλ©΄ 1, μ•„λ‹ˆλ©΄ 0을 좜λ ₯ν•œλ‹€.
* front: 큐의 κ°€μž₯ μ•žμ— μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.
* back: νμ˜ κ°€μž₯ 뒀에 μžˆλŠ” μ •μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€. λ§Œμ•½ 큐에 λ“€μ–΄μžˆλŠ” μ •μˆ˜κ°€ μ—†λŠ” κ²½μš°μ—λŠ” -1을 좜λ ₯ν•œλ‹€.

 

πŸ”¨  μž…μΆœλ ₯ 예

μž…λ ₯ 

  • 첫째 쀄에 μ£Όμ–΄μ§€λŠ” λͺ…λ Ήμ˜ 수 N (1 ≤ N ≤ 10,000)이 주어진닀.
  • λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” λͺ…령이 ν•˜λ‚˜μ”© 주어진닀.
  • μ£Όμ–΄μ§€λŠ” μ •μˆ˜λŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 100,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€.
  • λ¬Έμ œμ— λ‚˜μ™€μžˆμ§€ μ•Šμ€ λͺ…령이 μ£Όμ–΄μ§€λŠ” κ²½μš°λŠ” μ—†λ‹€.

 

좜λ ₯

  • 좜λ ₯ν•΄μ•Όν•˜λŠ” λͺ…령이 μ£Όμ–΄μ§ˆ λ•Œλ§ˆλ‹€, ν•œ 쀄에 ν•˜λ‚˜μ”© 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯ 1)

15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front

 

예제 좜λ ₯ 1)

1
2
2
0
1
2
-1
0
1
-1
0
3

 

πŸ’»  Main.java

  • queue의 ν•¨μˆ˜ poll, offer, add, peek, remove 등을 μ‚¬μš©ν•œλ‹€.
  • λ§ˆμ§€λ§‰ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œ back λ³€μˆ˜λ₯Ό 지정
/* λ°±μ€€ μŠ€νƒ/큐 - 10845 :: 큐 */
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));
		int n = Integer.parseInt(br.readLine());
		
		Queue<Integer> q = new LinkedList<>();
		int back = 0;
		for(int i = 0; i < n; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String s = st.nextToken();
			
			switch(s){
				case "push" : 
					back = Integer.parseInt(st.nextToken());
					q.add(back);
					break;
				case "pop" :{
					if(q.isEmpty()) System.out.println(-1);
					else System.out.println(q.poll());
					break;
				}
				case "size" : 
					System.out.println(q.size());
					break;
				case "empty" :{
					if(q.isEmpty()) System.out.println(1);
					else System.out.println(0);
					break;
				}
				case "front" : {
					if(q.isEmpty()) System.out.println(-1);
					else System.out.println(q.peek());
					break;
				}
				case "back" : {
					if(q.isEmpty()) System.out.println(-1);
					else {
						System.out.println(back);
					}
					break;
				}
			}
		}
		
	}
}
Comments