https://www.acmicpc.net/problem/1406
리스트 이터레이터 문제이다.
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] string = br.readLine().split("");
int n = Integer.parseInt(br.readLine());
List<String> list = new LinkedList();
for(int i=0;i<string.length;i++){
list.add(string[i]);
}
ListIterator it = list.listIterator(list.size());
for(int i=0;i<n;i++){
String[] input = br.readLine().split(" ");
if(input[0].equals("L")){
if(it.hasPrevious()) it.previous();
}
else if(input[0].equals("D")){
if(it.hasNext()) it.next();
}
else if(input[0].equals("B")){
// if(it.previousIndex()==list.size()-1){
// }
if(it.hasPrevious()) {
it.previous();
it.remove();
}
}
else if(input[0].equals("P")){
it.add(input[1]);
}
}
for(String s: list){
bw.write(s);
}
bw.flush();
}
}
import java.util.*;
class Main
{
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
String origin = sc.next();
List<Character> list = new LinkedList<>();
for (char alp : origin.toCharArray())
list.add(alp);
int M = sc.nextInt();
ListIterator<Character> it = list.listIterator(origin.length());
while (M-- > 0) {
char cmd = sc.next().charAt(0);
if (cmd == 'L') {
// 커서를 왼쪽으로 옮김, 맨 앞이면 무시
if (it.hasPrevious())
it.previous();
}
else if (cmd == 'D') {
// 커서를 오른쪽으로 옮김, 맨 뒤면 무시
if (it.hasNext())
it.next();
}
else if (cmd == 'B') {
// 커서 왼쪽의 문자를 삭제, 맨 앞이면 무시
if (it.hasPrevious()) {
it.previous();
it.remove();
}
}
else if (cmd == 'P') {
// 입력받은 문자를 커서 왼쪽에 추가
it.add(sc.next().charAt(0));
}
}
StringBuilder sb = new StringBuilder();
for (char alp : list)
sb.append(alp);
System.out.println(sb.toString());
}
}
'Problem Solving > 자료구조' 카테고리의 다른 글
BOJ1158 요세푸스 문제 (0) | 2024.03.06 |
---|---|
카카오 신고 결과 받기 (0) | 2023.05.04 |
Kakao2018 뉴스 클러스터링 (0) | 2023.04.13 |
kakao2018 캐시 (0) | 2023.04.10 |