白熱光5430 AC(Java、Java)
14513 ワード
今回解決した問題.
白準5430番交流です.
📕 提问链接
白準5430番交流です.
📕 提问链接
❗¥コード import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
static Deque<String> dq;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(T-- > 0)
{
String cmd = br.readLine();
int n = Integer.parseInt(br.readLine());
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input,"[,]");
dq = new ArrayDeque<>();
for(int i = 0; i < n; i++) dq.add(st.nextToken());
sb.append(doCmd(cmd)).append("\n");
}
System.out.print(sb);
}
static String doCmd(String cmd)
{
boolean isFirst = true;
for(char c : cmd.toCharArray())
{
// 뒤집기
if(c == 'R') isFirst = !isFirst;
// 버리기
else
{
if(dq.isEmpty()) return "error";
// 방향이 first
if(isFirst) dq.pollFirst();
else dq.pollLast();
}
}
StringBuilder sb = new StringBuilder("[");
if(isFirst) while(!dq.isEmpty()) sb.append(dq.pollFirst()).append(",");
else while(!dq.isEmpty()) sb.append(dq.pollLast()).append(",");
if(sb.length() > 1) sb.deleteCharAt(sb.length()-1);
return sb.toString()+"]";
}
}
📝 に答える
入力文字列の結果は、2つの演算RとDを使用して変換されます.配列を反転するとタイムアウトする可能性があるので,dequeを用いてポインタの位置を変える方向に実装を試みた.必要な出力値に変換するプロセスは少し乱れているが,実装自体は簡単な問題である.
📜 ポスト
初めてDequeで使ったことはありませんが、既知の資料構造なので、使いやすいと思います.
Reference
この問題について(白熱光5430 AC(Java、Java)), 我々は、より多くの情報をここで見つけました
https://velog.io/@jh5253/백준-5430-AC-Java자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
static Deque<String> dq;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while(T-- > 0)
{
String cmd = br.readLine();
int n = Integer.parseInt(br.readLine());
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input,"[,]");
dq = new ArrayDeque<>();
for(int i = 0; i < n; i++) dq.add(st.nextToken());
sb.append(doCmd(cmd)).append("\n");
}
System.out.print(sb);
}
static String doCmd(String cmd)
{
boolean isFirst = true;
for(char c : cmd.toCharArray())
{
// 뒤집기
if(c == 'R') isFirst = !isFirst;
// 버리기
else
{
if(dq.isEmpty()) return "error";
// 방향이 first
if(isFirst) dq.pollFirst();
else dq.pollLast();
}
}
StringBuilder sb = new StringBuilder("[");
if(isFirst) while(!dq.isEmpty()) sb.append(dq.pollFirst()).append(",");
else while(!dq.isEmpty()) sb.append(dq.pollLast()).append(",");
if(sb.length() > 1) sb.deleteCharAt(sb.length()-1);
return sb.toString()+"]";
}
}
📝 に答える
入力文字列の結果は、2つの演算RとDを使用して変換されます.配列を反転するとタイムアウトする可能性があるので,dequeを用いてポインタの位置を変える方向に実装を試みた.必要な出力値に変換するプロセスは少し乱れているが,実装自体は簡単な問題である.
📜 ポスト
初めてDequeで使ったことはありませんが、既知の資料構造なので、使いやすいと思います.
Reference
この問題について(白熱光5430 AC(Java、Java)), 我々は、より多くの情報をここで見つけました
https://velog.io/@jh5253/백준-5430-AC-Java자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
初めてDequeで使ったことはありませんが、既知の資料構造なので、使いやすいと思います.
Reference
この問題について(白熱光5430 AC(Java、Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@jh5253/백준-5430-AC-Java자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol