Categories
Algorithm🧩
백준 📝
BookReview📕
CleanCode✨
Network 📨
Database 🗄
DevOps☁️
에러 일기📕
Etc💬
Fishy Fish 🎣
Spring🌱
[백준] 2164 카드2
문제
N장의 카드가 차례로 1~N까지 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복한다.
- 제일 위에 있는 카드를 바닥에 버린다.
- 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.
N이 주어졌을 때 가장 마지막까지 남는 카드를 구하는 프로그램을 작성하시오.
입력 및 출력
첫 번째 줄: 정수 출력: 남게 되는 카드의 번호
Queue
- 선입선출(FIFO) 형식의 자료구조.
- 뒤에서 새로운 데이터가 추가되고 앞에서 데이터가 하나씩 삭제되는 구조
- 삽입이 일어나는 곳을 후단(rear), 삭제가 일어나는 곳을 전단(front)라고 함
자바가 제공하는 큐
- Queue에 값 추가
queue.add(x) queue.offer(x)-
add() & offer() 공통점
1) 큐 맨 뒤에 값 삽입
2) 추가 성공 시 true 반환 -
차이점
1) add()
- 큐가 꽉 차있는 경우 IllegalStateException Error 발생2) offer()
- 큐가 꽉 차있는 경우 false 반환
-
- Queue 값 제거
queue.remove() queue.poll() queue.clear()-
remove() & poll() 공통점
- 큐의 맨 앞에 있는 값을 반환한 후 삭제한다.
- 큐의 맨 앞에 있는 값을 반환한 후 삭제한다.
-
차이점
1) remove()
- 큐가 비어있는 경우 NoSuchElementException Error 발생
2) poll()- 큐가 비어있는 경우 null 반환
- 큐가 비어있는 경우 NoSuchElementException Error 발생
-
clear(): 큐를 완전히 비움
-
-
그 외
queue.peek() // 큐의 맨 앞의 값 반환 queue.size() // 큐의 크기 반환
코드
방식 1. 자바의 Queue클래스 이용
방식 2. Queue 직접 구현