반응형
문제 : https://www.acmicpc.net/problem/1406
풀이 :
와... 사실 나는 cursor를 따로 만들어 위치를 변경시키면서 진행되는 코드를 짰었다...
다른 사람이 짠 코드에 놀라서 그 코드로 정리해놓으려고 한다.
대단하다 이런생각을...ㅠㅠ
Stack을 왼쪽 오른쪽 두가지로 나누어 커서의 위치를 만들어내었다...
이 아이디어로만으로도 코드 구현은 가능하니까..! 여기까지만 설명...!
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuffer sb = new StringBuffer();
String[] words = st.nextToken().split("");
int n = 0;
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
// 왼쪽스택 오른쪽 스택 나누어 둔다.
Stack<String> left = new Stack<String>();
Stack<String> right = new Stack<String>();
for (int i = 0; i < words.length; i++) {// 왼쪽 스택에 입력받은 문자열을 전부 넣는다.
left.push(words[i]);
}
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
String c = st.nextToken();
switch (c) {
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;
}
}
while(!left.isEmpty()) {right.push(left.pop());}
while(!right.isEmpty()) {
sb.append(right.pop());
}
System.out.println(sb);
}
대단한 사람들이 참많구낭...
반응형
'Java > Algorithm' 카테고리의 다른 글
[Java-Algorithm] 백준 17298 오큰수 풀이 (0) | 2021.07.21 |
---|---|
[Java-Alogrithm] 백준 17413 단어 뒤집기 2 풀이 (0) | 2021.07.15 |
[Java-Algorithm] 백준 1874 스택 수열 풀이 (0) | 2021.07.15 |
[Java-Algorithm] 백준 9093 단어뒤집기 (0) | 2021.07.15 |
[Java-Algorithm] 백준 11650 좌표 정렬하기 풀이 (0) | 2021.07.15 |