Study for Backend/Programming language - Java
[Java 연습] Queue를 이용한 카드 섞기
지미니박
2024. 2. 22. 22:50
import java.util.*;
import java.util.stream.IntStream;
//20240222 카드 섞기
/*
1부터 N까지 번호로 구성된 N장의 카드가 있다.
1번 카드가 가장 위에 그리고 N번 카드는 가장 아래의 상태로 카드가 순서대로 쌓여있다.
아래의 동작을 카드 한 장만 남을 때가지 반복했을 때 가장 마지막 남는 카드 번호를 출력하시오.
1.가장 위의 카드는 버린다.
2.그 다음위의 카드는 쌓여 있는 카드의 가장 아래에 다시 넣는다.
*/
public class queuePractice02 {
public static int findLastCard(int N){
Queue queue = new LinkedList();
IntStream.range(1, N + 1).forEach(x -> queue.add(x)); ////n장의 카드뽑기
System.out.println(queue);
while (queue.size() > 1){
queue.remove(); //맨 윗장 삭제
int data = (int)queue.remove(); //꺼냄
queue.add(data);//맨뒤에 다시 추가
System.out.println(queue);
}
return (int)queue.remove(); //맨 마지막 장을 리턴
}
public static void main(String[] args){
System.out.println(findLastCard(4));
System.out.println(findLastCard(7));
System.out.println(findLastCard(9));
}
}