https://www.acmicpc.net/problem/2164
백준 2164번 카드 2 문제 링크입니다.
핵심
큐를 사용하면 쉽게 풀 수 있는 문제이다. 가장 먼저 넣은 수를 제거하고, 그 뒤의 수를 맨뒤로 보낸다. 카드가 1개 남았을 때까지 반복한다.
정답 코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
Queue q = new LinkedList();
int N =sc.nextInt();
for (int i=1;i<=N; i++){
q.offer(i);
}
while(true){
if(N==1)break;
q.poll();
N--;
if(N==1)break;
q.offer(q.poll());
}
System.out.println(q.peek());
}
}
해설
1부터 N까지 큐에 넣는다.
맨 처음 들어온 값을 제거하고, 그 뒤의 값을 맨뒤로 보낸다.
큐에 들어있는 값을 개수가 1이 될 때까지 반복한다.
1개 남은 수의 값을 출력한다.
개선점이나 오류가 있다면, 댓글 부탁드립니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준]1912번 연속합(java) (0) | 2022.07.31 |
---|---|
[백준]9184번 신나는 함수 실행(java) (0) | 2022.07.30 |
[백준]9663번 N-Queen(java) (0) | 2022.07.24 |
[백준]14888번 연산자 끼워넣기(java) (0) | 2022.07.24 |
[백준]11729번 하노이 탑 이동 순서(java) (1) | 2022.07.23 |