반응형
처음엔 입력출력 때문에 시간 초과 나는줄 알았는데
스택을 사용한 더 빠른 풀이가 있었습니다..
틀린 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> words = new ArrayList<>(Arrays.asList(bf.readLine().split("")));
StringBuilder sb = new StringBuilder();
int M = Integer.parseInt(bf.readLine());
int cursor = words.size();
for (int i = 0; i<M; i++){
String[] input = bf.readLine().replaceAll(" ","").split("");
if (input[0].equals("L"))
cursor = cursor!=0 ? cursor-1 : 0;
else if (input[0].equals("D"))
cursor = cursor!=words.size() ? cursor+1 : cursor;
else if (input[0].equals("B")) {
if (cursor != 0) words.remove(--cursor);
} else if (input[0].equals("P"))
words.add(cursor++, input[1]);
}
for (String str : words) sb.append(str);
System.out.print(sb);
}
}
정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
Stack<String> left = new Stack<>();
Stack<String> right = new Stack<>();
Arrays.stream(bf.readLine().split("")).forEach(item -> left.push(item));
int M = Integer.parseInt(bf.readLine());
for (int i = 0; i<M; i++){
StringTokenizer st = new StringTokenizer(bf.readLine());
String input = st.nextToken();
switch (input){
case "L":
if (!left.isEmpty()) right.push(left.pop());
break;
case "D":
if (!right.isEmpty()) left.push(right.pop());
break;
case "B":
if (!left.isEmpty()) left.pop();
break;
case "P":
left.push(st.nextToken());
break;
}
}
StringBuilder sb = new StringBuilder();
left.forEach(item->sb.append(item));
while (!right.isEmpty()) sb.append(right.pop());
System.out.print(sb);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1158번 요세푸스 문제 [ Java ] (0) | 2020.12.25 |
---|---|
백준 5397번 키로거 [ Java ] (0) | 2020.12.25 |
백준 1919번 애너그램 만들기 [ Java ] (0) | 2020.12.25 |
백준 13300번 방 배정 [ Java ] (0) | 2020.12.25 |
백준 11328번 Strfry [ Java ] (0) | 2020.12.25 |