문제

입출력 및 예제

코드작성
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt(); // 큐의 크기
int M = scanner.nextInt(); // 뽑아내려는 원소의 개수
// 1부터 N까지 반복문 실행 후 큐에 순차적으로 1~N까지의 숫자를 추가
LinkedList<Integer> queue = new LinkedList<>();
for (int i = 1; i <= N; i++) {
queue.add(i);
}
// 뽑아내려는 원소의 값을 저장할 배열 생성 후 M번 반복하여 뽑아내려는 원소를 입력받고 원소값을 배열에 저장
int[] targets = new int[M];
for (int i = 0; i < M; i++) {
targets[i] = scanner.nextInt();
}
// 뽑아내려는 원소들을 하나씩 반복하여 처리 → 무한루프시작
// 큐에서 뽑아내려는 원소의 인덱스를 찾음
// 큐의 반 크기를 계산
int count = 0; // 뽑아내는 횟수를 저장할 변수 초기화
for (int target : targets) {
while (true) {
int index = queue.indexOf(target);
int halfSize = queue.size() / 2;
if (queue.getFirst() == target) {
queue.pollFirst();
break;
}
if (index <= halfSize) {
queue.addLast(queue.pollFirst());
} else {
queue.addFirst(queue.pollLast());
}
count++;
}
}
System.out.println(count);
}
}
글 재미있게 봤습니다.