[BOJ] 5430 AC - JAVA
📚 Problem
📝 Solution
Key Idea
- 문자열에서 숫자만 분리하여
ArrayList
에 담는다R
연산을 할때에는 실제로 배열을reverse
하는 것이 아닌 정방향과 역방향으로boolean
값으로 구분한다- 배열의 size 가 0 일 때 D 연산을 수행한다면 error 반환
- 배열의 size 가 1 이상 일 떄
정방향 역방향
에 따라 배열을 제거하는 인덱스를0
또는length - 1
로 한다
private static String execute(String functions, ArrayList<Integer> list) {
boolean check = true; // true : 정방향 , false : 역방향
for (int i = 0; i < functions.length(); i++) {
char function = functions.charAt(i);
if (function == 'R')
check = !check;
else {
if (list.size() == 0)
return "error";
if (check)
list.remove(0);
else
list.remove(list.size() - 1);
}
}
return makeArray(list, check);
}
💻 Code
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
for (int i = 0; i < T; i++) {
String functions = scanner.next();
int n = scanner.nextInt();
String array = scanner.next();
ArrayList<Integer> list = numArray(array);
System.out.println(execute(functions, list));
}
scanner.close();
}
private static ArrayList<Integer> numArray(String ary) {
ArrayList<Integer> num = new ArrayList<>();
String[] tokens = ary.substring(1, ary.length() - 1).split(",");
if(tokens[0].equals(""))
return num;
for(String token : tokens)
num.add(Integer.parseInt(token));
return num;
}
private static String execute(String functions, ArrayList<Integer> list) {
boolean check = true; // true : 정방향 , false : 역방향
for (int i = 0; i < functions.length(); i++) {
char function = functions.charAt(i);
if (function == 'R')
check = !check;
else {
if (list.size() == 0)
return "error";
if (check)
list.remove(0);
else
list.remove(list.size() - 1);
}
}
return makeArray(list, check);
}
private static String makeArray(ArrayList<Integer> list, boolean check) {
StringBuilder builder = new StringBuilder();
builder.append("[");
if (check) {
for (int i = 0; i < list.size(); i++) {
if (i == 0)
builder.append(list.get(i));
else
builder.append(",").append(list.get(i));
}
}
else {
for (int i = list.size() - 1; i >= 0; i--) {
if (i == list.size() - 1)
builder.append(list.get(i));
else
builder.append(",").append(list.get(i));
}
}
builder.append("]");
return builder.toString();
}
}
Author And Source
이 문제에 관하여([BOJ] 5430 AC - JAVA), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choi-jaewon/BOJ-5430-AC-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)