From 56821b9749bbe70623fb20c39a614f8f3f1e514a Mon Sep 17 00:00:00 2001 From: IAM <83930018+syslians@users.noreply.github.com> Date: Sun, 10 Aug 2025 21:45:54 +0900 Subject: [PATCH] =?UTF-8?q?Create=201021(=ED=9A=8C=EC=A0=84=ED=95=98?= =?UTF-8?q?=EB=8A=94=ED=81=90).java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 현재 target의 인덱스(idx)를 챶움. 2. 왼쪽 회전거리 = idx 오른쪽 회전 거리 = deque.size() - idx 3. 더 짧은 거리로 회전 후 pop O (N * m) // 제약조건이 N < 50 이므로 충분히 빠름. --- ...355\225\230\353\212\224\355\201\220).java" | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 "KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/1021(\355\232\214\354\240\204\355\225\230\353\212\224\355\201\220).java" diff --git "a/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/1021(\355\232\214\354\240\204\355\225\230\353\212\224\355\201\220).java" "b/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/1021(\355\232\214\354\240\204\355\225\230\353\212\224\355\201\220).java" new file mode 100644 index 0000000..e6a161f --- /dev/null +++ "b/KHJ_Root/\353\260\261\354\244\200\353\254\270\354\240\234/1021(\355\232\214\354\240\204\355\225\230\353\212\224\355\201\220).java" @@ -0,0 +1,46 @@ +import java.util.*; +import java.io.*; + +public calss Main { + public static void main(String[] args) throws IOException{ + BufferReader br = new BufferReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLint()); + + int N = Integer.parseInt(st.nextToken()); // Queue Size + int M = Integer.parseInt(st.nextToken()); // 뽑아야하는 원소 개수 + + LinkedList dequeue = new LinkedList<>(); + for (int i = 1; i <= N; i++) { + dequeue.add(i); + } + + st = new StringTokenixer(br.nextLine()); + int count = 0; + + // 현재 덱에서 target의 위치 찾기 + int idx = deqie.indexOf(target); + + // 왼쪽 회전 거리 vs 오른쪽 회전 거리 + int leftDist = idx; // 앞에서 target까지 이동 횟수 + int rightDist = dequeue.size() - idx; // 뒤에서 target까지 이동 횟수 + + if (leftDist <= rightdist) { + // 왼쪽 회전 + for (int j = 0; j < leftDist; j++) { + deque.addLast(dequeue.removeFirsr()); + } + count += leftdist; + } else { + // 오른쪽 회전 + for (int j = 0; j <= rightDist; j++) { + deque.addFirst(deque.removeFirst()); + } + count += rightDist; + } + + // target 제거 + deque.removeFirst(); + } + + System.out.println(count); +}