728x90
반응형
[문제]
n장의 카드가 있고, 각각의 카드는 차례로 1부터 n까지의 번호가 붙어있다. 1번 카드가 제일 위에, n번 카드가 제일 아래인 상태로 순서대로 카드가 놓여있다. 카드가 한 장만 남을 때까지 다음과 같은 연산을 반복한다.
제일 위에서부터 1,2,3,4 의 순서로 놓여있을 때 1을 버리면 2,3,4 가 남는다. 여기서 2를 제일 아래로 옮기면 3,4,2가 된다. 3을 버리면 4,2가 되고 4을 밑으로 옮기면 2,4가 된다. 마지막으로 2를 버리고 나면 남는 카드6는 4가 된다. 이때 n(1 <= n <= 500,000)개의 카드가 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로그램을 작성하시오.
ex.
입력값 = 6
결과 = 4
[풀이]
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Queue<Integer> queue = new LinkedList<>(); // Queue 선언
int n = sc.nextInt(); // 정수 n 받기
int num = 1; //1부터 시작
for(int i=1;i<=n;i++){
queue.add(i); //1부터 차례대로 queue에 넣기
}
if(!queue.isEmpty()){
while(queue.size()>1){ //마지막 1개가 남을때까지
queue.poll();
queue.add(queue.poll());
}
System.out.println(queue.poll());
}
}
}
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/2178] 미로 탐색하기 (BFS) (0) | 2024.09.19 |
---|---|
[백준/11724] 연결 요소의 개수(DFS) (1) | 2024.09.12 |
[백준/2750,1427] 수 정렬하기(오름차순 정렬) / 소트인사이드(내림차순 정렬) (0) | 2024.09.12 |
[백준/1874] 스택 수열 (1) | 2024.09.10 |
[백준/11659] 구간 합 구하기4 (1) | 2024.09.09 |