SWEA 1228 암호문1 D3 (자바 Java)

SWEA 1228 암호문1

문제 정보

  • 문제 출처 : SW Expert Academy
  • 문제 번호 : 1228
  • 문제 제목 : 암호문1
  • 문제 난이도 : D3
  • 풀이 언어 : Java

문제

암호문을 수정해야 하는데, 이 암호문은 특수 제작된 처리기로만 수정이 가능하다.
이 처리기는 다음과 같이 1개의 기능을 제공한다.

  • I(삽입) x, y, s : 앞에서부터 x의 위치 바로 다음에 y개의 숫자를 삽입한다. s는 덧붙일 숫자들이다.

암호문을 수정하고, 수정된 결과의 처음 10개 숫자를 출력하는 문제

접근

LinkedList 를 이용해 문제를 해결하였다.

풀이

  • 정수 N을 입력 받는다. 이는 LinkedList에 초기에 저장할 원소의 수를 나타낸다.
  • LinkedList인 list를 생성한다.
  • for 반복문을 사용하여 N개의 정수를 list에 추가한다.
  • 정수 M을 입력 받는다. 이는 수행할 수정 명령의 수를 나타낸다.
  • 두 번째 for 반복문을 시작하여 M개의 수정 명령을 처리한다.
  • 문자열 I와 정수 x, y를 입력 받는다.
  • 내부 for 반복문을 사용하여 y개의 정수를 list의 x 위치에 차례대로 삽입한다.
  • 테스트 케이스 번호를 출력한다.
  • list의 첫 10개 원소를 출력한다.

후기

LinkedList 로 쉽게 해결한 문제이다. LinkedList 를 활용한 다른 문제들도 많이 풀어 볼 계획이다.

코드

Java
import java.util.Scanner;
import java.io.FileInputStream;
import java.util.LinkedList;
  
class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
  
        for(int test_case = 1; test_case <= 10; test_case++)
        {
            int N = sc.nextInt();
             
            LinkedList<Integer> list = new LinkedList<>();
             
            for (int i = 0; i < N; i++) {
                list.add(sc.nextInt());
            }
             
            int M = sc.nextInt();
             
            for (int i = 0; i < M; i++) {
                String I = sc.next();
                int x = sc.nextInt();
                int y = sc.nextInt();
                for (int j = 0; j < y; j++) {
                    list.add(x+j, sc.nextInt());
                }
            }
            System.out.print("#" + test_case);
            for (int i = 0; i < 10; i++) {
                System.out.print(" " + list.get(i));
            }
            System.out.println();
        }
    }
}
Java

Leave a Comment