From b8460c1afc9745a330a9038ddae86e9a6b48b336 Mon Sep 17 00:00:00 2001 From: Donew <47556347+03do-new30@users.noreply.github.com> Date: Thu, 13 Feb 2025 21:41:29 +0900 Subject: [PATCH] =?UTF-8?q?[20250213]=20BOJ=20/=20G4=20/=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=20=EC=83=9D=EC=84=B1=20/=20=EC=8B=A0?= =?UTF-8?q?=EB=8F=99=EC=9C=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\354\227\264 \354\203\235\354\204\261.md" | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 "03do-new30/202502/13 BOJ G4 \353\254\270\354\236\220\354\227\264 \354\203\235\354\204\261.md" diff --git "a/03do-new30/202502/13 BOJ G4 \353\254\270\354\236\220\354\227\264 \354\203\235\354\204\261.md" "b/03do-new30/202502/13 BOJ G4 \353\254\270\354\236\220\354\227\264 \354\203\235\354\204\261.md" new file mode 100644 index 00000000..f428ed03 --- /dev/null +++ "b/03do-new30/202502/13 BOJ G4 \353\254\270\354\236\220\354\227\264 \354\203\235\354\204\261.md" @@ -0,0 +1,77 @@ +```java +import java.io.*; + +public class Main { + + static int N; + static char[] arr; + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + + N = Integer.parseInt(br.readLine()); + arr = new char[N]; + for (int i = 0; i < N; i++) { + arr[i] = br.readLine().charAt(0); + } + + char[] result = new char[N]; + int headIdx = 0; // arr 앞쪽 포인터 + int tailIdx = N-1; // arr 뒤쪽 포인터 + int idx = 0; // result의 인덱스 + + while (headIdx <= tailIdx) { + + if (idx == N) { break; } + + if (arr[headIdx] < arr[tailIdx]) { + result[idx++] = arr[headIdx++]; + } + else if (arr[headIdx] > arr[tailIdx]) { + result[idx++] = arr[tailIdx--]; + } + else { + + boolean isHeadSmaller = true; + + for (int offset = 1; offset < N; offset++) { + if (headIdx + offset >= N || tailIdx - offset < 0) { + break; + } + if (headIdx + offset > tailIdx - offset) { + break; + } + + if (arr[headIdx + offset] < arr[tailIdx - offset]) { + break; + } else if (arr[headIdx + offset] > arr[tailIdx - offset]) { + isHeadSmaller = false; + break; + } + } + + if (isHeadSmaller) { + result[idx++] = arr[headIdx++]; + } else { + result[idx++] = arr[tailIdx--]; + } + } + } + + + // 80글자마다 새줄 문자를 출력한다. + for (int i = 0; i < N; i++) { + bw.write(result[i]); + if ((i+1) % 80 == 0) { + bw.write("\n"); + } + } + + br.close(); + bw.flush(); + bw.close(); + } + +} + +```