import java.util.*;
import java.io.*;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for(int test_case = 1; test_case <= 10; test_case++)
{
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
List<Integer> script = new LinkedList<>();
for (int i = 0; i < N; i++){
script.add(Integer.parseInt(st.nextToken()));
}
st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for (int i = 0; i < M; i++){
String cmd = st.nextToken();
if (cmd.equals("I")){
insert(script, st);
}
else if (cmd.equals("D")){
delete(script, st);
}
else {
add(script, st);
}
}
sb.append("#").append(test_case).append(" ");
for (int i = 0; i < 10; i++){
sb.append(script.get(i)).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
public static void insert(List<Integer> script, StringTokenizer st){
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
for (int i = 0; i < y; i++){
script.add(x + i, Integer.parseInt(st.nextToken()));
}
}
public static void delete(List<Integer> script, StringTokenizer st){
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
for (int i = 0; i < y; i++){
script.remove(x);
}
}
public static void add(List<Integer> script, StringTokenizer st){
int y = Integer.parseInt(st.nextToken());
for (int i = 0; i < y; i++){
script.add(Integer.parseInt(st.nextToken()));
}
}
}
1. 어려웠던 점:
- X
2. 알게된 점:
- 리스트, 구현 연습
3. 알고리즘 풀이:
- insert, delete, add로 모듈화하면 한결 쉽다.
insert의 경우, 원소를 넣으면 위치가 변하는 점을 유의해 함수를 작성한다.
'알고리즘 문제풀이 > SWEA' 카테고리의 다른 글
[SWEA 3316] 동아리실 관리하기 with JAVA (0) | 2021.07.19 |
---|---|
[SWEA 1288] 새로운 불면증 치료법 with JAVA (0) | 2021.07.19 |
[SWEA 10726] 이진수 표현법 with JAVA (0) | 2021.07.19 |