SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
설명
배열 사이즈를 동적으로 변경 가능한 Collection의 List를 사용하는 것이 이 문제의 핵심입니다.
ArrayList를 사용하긴 했는데, 사실 배열을 조작하는 데 있어서 LinkedList가 드는 비용이 더 적기 때문에 LinkedList를 사용하는 것이 더 낫다고 할 수 있습니다.
명령어들 입력이 들어오는 대로 바로 처리하도록 하는 게 좋은데, 처음 풀 때 잘못 접근해서 이 명령어들 하나 하나를 배열에 따로 넣고 처리하려고 하는 바람에 좀 헤맸던 문제였습니다ㅠㅠ
코드
import java.util.ArrayList;
import java.util.Scanner;
public class SWEA1228_CyperText {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
for(int tc=1; tc<=10; tc++) {
int length = sc.nextInt(); //원본 암호문의 길이
ArrayList<String> list = new ArrayList<>();
for(int i=0; i<length; i++) //원본 암호문을 순서대로 저장
list.add(sc.next());
int cmd = sc.nextInt(); //명령어의 갯수
for(int i=0; i<cmd; i++) { //총 명령어의 갯수만큼 반복함
if(sc.next().equals("I")) {
int x = sc.nextInt(); // 숫자를 덧붙일 위치
int y = sc.nextInt(); //덧붙일 숫자의 갯수
ArrayList<String> list2 = new ArrayList<>();
for(int j=0; j<y; j++) {
list2.add(sc.next());
} // 덧붙일 숫자 s를 순서대로 리스트에 저장
list.addAll(x, list2); // 덧붙이는 작업을 한 번에 수행
}
}
sb.append("#"+tc+" ");
for(int i=0; i<10; i++) {
sb.append(list.get(i)+" ");
}
sb.append("\n");
}
System.out.print(sb);
}
}
'알고리즘 문제풀이 > SWEA(SW Expert Academy)' 카테고리의 다른 글
[SWEA][JAVA]1289 - 원재의 메모리 복구하기 (0) | 2021.08.17 |
---|---|
[SWEA][JAVA]5215 - 햄버거 다이어트 (0) | 2021.08.13 |
[SWEA][JAVA]1204 - 최빈수 구하기 (0) | 2021.08.10 |
[SWEA]{JAVA]9229 - 한빈이와 Spot Mart (0) | 2021.08.09 |
[SWEA][JAVA]1208번 - Flatten (0) | 2021.08.08 |