From 67c8192a8c06288ec6887a806f803bab1606c9f0 Mon Sep 17 00:00:00 2001 From: Jonghwan Lee <123362165+0224LJH@users.noreply.github.com> Date: Sun, 20 Jul 2025 18:59:47 +0900 Subject: [PATCH] =?UTF-8?q?[20250720]=20BOJ=20/=20G4=20/=20=EC=86=8C?= =?UTF-8?q?=ED=8A=B8=20/=20=EC=9D=B4=EC=A2=85=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20 BOJ \354\206\214\355\212\270 .md" | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 "0224LJH/202507/20 BOJ \354\206\214\355\212\270 .md" diff --git "a/0224LJH/202507/20 BOJ \354\206\214\355\212\270 .md" "b/0224LJH/202507/20 BOJ \354\206\214\355\212\270 .md" new file mode 100644 index 00000000..1068fac9 --- /dev/null +++ "b/0224LJH/202507/20 BOJ \354\206\214\355\212\270 .md" @@ -0,0 +1,85 @@ +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + + +public class Main { + + static int len,changeCnt,left; + static int[] arr; + + + public static void main(String[] args) throws IOException { + init(); + process(); + print(); + } + + private static void init() throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + len = Integer.parseInt(br.readLine()); + arr = new int[len]; + + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int i = 0; i < len; i++) { + arr[i] = Integer.parseInt(st.nextToken()); + } + changeCnt = Integer.parseInt(br.readLine()); + left = changeCnt; + } + + private static void process() { + //i번 인덱스를 조사하는데 n번의 기회가 남았을 때, + //지금 인덱스에서 1~n칸만큼 떨어진 숫자들 중 가장 큰 값 찾음. + //제일 큰 값을 i번 인덱스에 넣고, 나머지 값들은 다 한칸씩 미룸 + //남은 횟수 갱신 + //이를 끝까지 가거나, 기회를 다 쓰면 끝 + int curIdx = 0; + while (curIdx < len-1 && left > 0 ){ + int max = arr[curIdx]; + int maxIdx = curIdx; + + for (int i = curIdx+1; (i < len && i <= curIdx + left ); i++) { + if (arr[i] > max){ + max = arr[i]; + maxIdx = i; + } + } + + rangeSwap(curIdx, maxIdx); + left -= maxIdx - curIdx; + curIdx++; + } + + + } + + private static void rangeSwap(int fromIdx, int toIdx) { + for (int i = toIdx; i > fromIdx; i--) { + swap(i, i-1); + } + } + + private static void swap(int tIdx1, int tIdx2) { + int tmp = arr[tIdx1]; + arr[tIdx1] = arr[tIdx2]; + arr[tIdx2] = tmp; + } + + + + private static void print() { + for (int i = 0; i < len; i++) { + System.out.print(arr[i] + " "); + } + } + + + +} + + + +``` \ No newline at end of file