白駿6137-文字列生成
問題を解く
文字列の末尾を確認しながら、辞書順に先頭の文字を追加し、同じ文字が表示された場合は、辞書順に先頭の文字をより深く検索して追加できます.
もう一度調べてみると、文字の両側が同じで、最終的に追加されていない場合は、どちらにでも置くことができます.
質問リンク
boj/6137
ソースコード
PS/6137.java
文字列の末尾を確認しながら、辞書順に先頭の文字を追加し、同じ文字が表示された場合は、辞書順に先頭の文字をより深く検索して追加できます.
もう一度調べてみると、文字の両側が同じで、最終的に追加されていない場合は、どちらにでも置くことができます.
質問リンク
boj/6137
ソースコード
PS/6137.java
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int N = Integer.parseInt(br.readLine());
char[] arr = new char[N];
char[] t = new char[N];
for (int i = 0; i < N; i++) {
arr[i] = br.readLine().charAt(0);
}
int l = 0, r = N - 1, idx = 0;
while (l <= r) {
if (arr[l] < arr[r]) {
t[idx++] = arr[l++];
} else if (arr[l] > arr[r]) {
t[idx++] = arr[r--];
} else {
int l2 = l, r2 = r;
boolean flag =false;
while (l2<=r2) {
if (arr[l2] < arr[r2]) {
flag =true;
t[idx++] = arr[l++];
break;
} else if (arr[l2] > arr[r2]) {
flag =true;
t[idx++] = arr[r--];
break;
}
else
{
l2++;
r2--;
}
}
if(!flag)
t[idx++]=arr[l++];
}
}
for(int i=0;i<N;i++) {
bw.write(t[i]);
if(i != 0 && (i+1) % 80 ==0)
bw.write("\n");
}
bw.flush();
}
}
Reference
この問題について(白駿6137-文字列生成), 我々は、より多くの情報をここで見つけました https://velog.io/@pjh612/백준-6137번-문자열-생성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol