해당 문제는 최적화 되지 않은 문제라고 봄
- 문제 설명 난해
- 예시 case 복잡
- 'A' 맨 뒤 추가 기능 구현하지 않아도 Pass 가능
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
class Solution {
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int test_case = 1; test_case <= 10; test_case++) {
br.readLine(); // 원본 암호문의 길이 날리기
LinkedList<String> password = new LinkedList<>(); // 암호문
StringTokenizer original = new StringTokenizer(br.readLine());
while(original.hasMoreTokens()) {
password.add(original.nextToken()); // 원본 암호문 LinkedList에 저장
}
br.readLine(); // 명령어의 개수 날리기
// 명령어
StringTokenizer command = new StringTokenizer(br.readLine());
while(command.hasMoreTokens()) {
String func = command.nextToken(); // 기능
if(func.equals("I")) {
int x = Integer.parseInt(command.nextToken()); // 삽입 위치
int y = Integer.parseInt(command.nextToken()); // 삽입 개수
for (int i = 0; i < y; i++) {
password.add(x + i, command.nextToken()); // 암호문에 삽입
}
} else if(func.equals("A")){
int x = password.size(); // 삽입 위치 맨 뒤
int y = Integer.parseInt(command.nextToken()); // 삽입 개수
for (int i = 0; i < y; i++) {
password.add(x + i, command.nextToken()); // 암호문에 삽입
}
} else {
int x = Integer.parseInt(command.nextToken()); // 삭제 위치
int y = Integer.parseInt(command.nextToken()); // 삭제 개수
for (int i = 0; i < y; i++) {
password.remove(x + i); // 삭제
}
}
} // end while
// 출력
System.out.print("#" + test_case);
for (int i = 0; i < 10; i++) {
System.out.print(" " + password.get(i));
} System.out.println();
}
}
}
for test_case in range(1, 11):
input() # 원본 암호문의 길이 날리기
original = input().split() # 원본 암호문
input() # 명령어의 개수 날리기
cmd = input().split() # 명령어
for idx in range(len(cmd)):
if cmd[idx] == 'A': # 맨 뒤 추가
y = int(cmd[idx + 1])
for i in range(y):
original.append(cmd[idx + i + 2])
elif cmd[idx] == 'I': # 삽입
x = int(cmd[idx + 1])
y = int(cmd[idx + 2])
for i in range(y):
original.insert(x + i, cmd[idx + i + 3])
elif cmd[idx] == 'D': # 삭제
x = int(cmd[idx + 1])
y = int(cmd[idx + 2])
for i in range(y):
original.pop(x + i)
# 출력
print("#", test_case, sep="", end="")
for i in range(10):
print(" ", original[i], sep="", end="")
print()