[SWEA] 1230. 암호문3

1 분 소요

문제 링크

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();
        }
    }
}

카테고리:

업데이트:

댓글남기기