BOJ_1406_에디터_java
2022. 12. 27. 10:20ㆍAlgorithm/BOJ
728x90
import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.StringTokenizer;
/**
백준 1406번 에디터
실버 2
*/
public class BOJ_1406_에디터 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
// linkedList 사용
List<Character> strList = new LinkedList();
// char 배열로 입력 문자열 받기
char[] str = st.nextToken().toCharArray();
// linkedList에 값 입력
int N = str.length;
for(int i = 0; i<N;i++){
strList.add(str[i]);
}
// cursor 위치를 int로 사용시 시간초과 (위치를 찾는 시간이 걸림) -> ListIterator 사용
ListIterator<Character> iter = strList.listIterator();
while (iter.hasNext()) {
iter.next();
}
// 명령어 입력
st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
for(int i = 0; i<M; i++) {
st = new StringTokenizer(br.readLine());
char ch = st.nextToken().charAt(0);
switch (ch){
case 'P' :
char letter = st.nextToken().charAt(0);
iter.add(letter);
break;
case 'L' :
if (iter.hasPrevious()){
iter.previous();
}
break;
case 'D':
if(iter.hasNext()){
iter.next();
}
break;
case 'B':
if(iter.hasPrevious()){
iter.previous();
iter.remove();
}
break;
default:
break;
}
}
for (Character ansCh : strList){
bw.write(ansCh);
}
bw.flush();
bw.close();
}
}
'Algorithm > BOJ' 카테고리의 다른 글
BOJ_12852_1로 만들기 2_java (0) | 2023.01.10 |
---|---|
BOJ_14938_서강그라운드_java (0) | 2023.01.09 |
BOJ_13172_Σ_java (0) | 2023.01.06 |
BOJ_2448_별 찍기 11_java (0) | 2022.12.28 |
BOJ_2193_이친수_java (0) | 2022.12.22 |