[SWEA] 1230. 암호문3
문제 링크
풀이 과정
삽입과 삭제가 잦으므로, LinkedList를 사용했습니다.
for (int i = 0; i < M; i++) {
String command = sc.next();
if (command.equals("I")) {
int x = sc.nextInt();
int y = sc.nextInt();
String[] tmp = new String[y];
for (int j = 0; j < y; j++) tmp[j] = sc.next();
for (int j = y - 1; j >= 0; j--) list.add(x, tmp[j]);
} else if (command.equals("D")) {
int x = sc.nextInt();
int y = sc.nextInt();
while (y-- > 0) list.remove(x);
} else if (command.equals("A")) {
int y = sc.nextInt();
while (y-- > 0) list.add(sc.next());
}
}
위 코드는 삽입(I), 삭제(D), 추가(A)에 대한 연산을 실행합니다.
- 삽입(I) : 먼저 y개의 숫자를 배열 tmp에 입력받고, x 위치에 tmp의 맨 뒤부터 앞으로 이동하며 요소를 리스트에 담아줍니다. 맨 뒤 요소부터 넣어줌으로써,
add 메소드
의 삽입 위치는 x로 고정됩니다. - 삭제(D) :
remove 메소드
로 x위치부터 y개의 숫자를 제거합니다. - 추가(A) : 추가 연산은 맨 뒤에 숫자를 덧붙이므로, 인덱스 없는
add 메소드
를 사용합니다.
코드
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
for (int tc = 1; tc <= 10; tc++) {
int N = sc.nextInt();
List<String> list = new LinkedList<>();
for (int i = 0; i < N; i++) list.add(sc.next());
int M = sc.nextInt();
for (int i = 0; i < M; i++) {
String command = sc.next();
if (command.equals("I")) {
int x = sc.nextInt();
int y = sc.nextInt();
String[] tmp = new String[y];
for (int j = 0; j < y; j++) tmp[j] = sc.next();
for (int j = y - 1; j >= 0; j--) list.add(x, tmp[j]);
} else if (command.equals("D")) {
int x = sc.nextInt();
int y = sc.nextInt();
while (y-- > 0) list.remove(x);
} else if (command.equals("A")) {
int y = sc.nextInt();
while (y-- > 0) list.add(sc.next());
}
}
System.out.print("#" + tc + " ");
for (int i = 0; i < 10; i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
}
}
}
댓글남기기