1. 문제

2. 아이디어
3. 수도 코드
while(deque의 크기가 1이 아닐때까지){
deque 앞에서 하나 뽑고
if 반복 횟수가 홀수이면 버리고
if 반복 횟수가 짝수면 뒤에 추가
}
4. 코드
import java.io.*;
import java.util.*;
class Main {
public static void main(String args[]) throws Exception{
Scanner scn = new Scanner(System.in);
int N = scn.nextInt();
Deque<Integer> deque = new ArrayDeque<>();
for(int i =0 ; i< N; i++){
deque.add(i+1);
}
int count = 1;
int tmp;
while(deque.size() != 1){
tmp = deque.removeFirst();
if(count % 2 == 0) deque.addLast(tmp);
count = count + 1;
}
tmp = deque.removeFirst();
System.out.println(tmp);
}
}
5. 느낀점 및 배운점
- Deque 선언
- Deque<타입명> 자료명 = new ArrayDeque<>();
- Deque 추가
- 앞에서 넣기 : deque.addFirst();
- 뒤에서 넣기 : deque.addLast();
- Deque 빼기
- 앞에서 빼기 : deque.removeFirst();
- 뒤에서 빼기 : deque.removeLast();
- Deque 값 확인
- 맨 앞 값 확인 : deque.peekFirst();
- 맨 뒤 값 확인 : deque.peekLast();