문제 해석
내가 생각한 풀이 방법
while
문을 사용해서 카드가 1장 남을 때 까지
remove()
를 사용해서 카드의 맨 앞 장을 삭제하고,
삭제한myQueue
에서remove()
로 맨 앞의 카드를 삭제&반환 한 것을add()
함수를 통해 맨 뒤(아래)로 숫자를 삽입한다!
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Practice12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Queue 생성
Queue<Integer> myQueue = new LinkedList<>();
int N = sc.nextInt();
// 카드를 큐에 저장
for(int i = 1; i <= N; i++) {
myQueue.add(i);
}
// 카드가 1장 남을때 까지
while (myQueue.size() > 1) {
myQueue.remove();
myQueue.add(myQueue.remove()); // 맨 위의 카드를 가장 아래로 이동
}
System.out.println(myQueue.remove());
sc.close();
}
}