알고리즘/SWEA

SWEA 1228번 암호문1

anott 2021. 8. 9. 23:40

출처: SW Expert Academy

 

제출 날짜: 2021년 8월 9일 월요일

 

 

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.io.FileInputStream;
 
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++) { // 10개의 테스트 케이스
            LinkedList<Integer> pw = new LinkedList<>();
            StringTokenizer st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken()); // 원본 암호문의 길이 N ( 10 ≤ N ≤ 20 의 정수)
            st = new StringTokenizer(br.readLine(), " ");
            for (int i = 0; i < N; i++) { // 원본 암호문 입력 받기
                pw.add(Integer.parseInt(st.nextToken()));
            }
            st = new StringTokenizer(br.readLine());
            int M = Integer.parseInt(st.nextToken()); // 명령어의 개수 ( 5 ≤ N ≤ 10 의 정수)
            st = new StringTokenizer(br.readLine(), " ");
            for (int i = 0; i < M; i++) { // 명령어 입력 받기
                char I = st.nextToken().charAt(0); // I
                int X = Integer.parseInt(st.nextToken()); // 앞에서부터 X의 위치
                int Y = Integer.parseInt(st.nextToken()); // Y개의 숫자를 삽입
                for (int j = 0; j < Y; j++) { // 덧붙일 숫자들
                    pw.add(X + j, Integer.parseInt(st.nextToken())); // 한 칸씩 밀리기 때문에 X+j 위치에 삽입
                }
            }
            StringBuilder sb = new StringBuilder("#" + test_case + " ");
            for (int i = 0; i < 10; i++) { // 수정된 결과의 처음 10개 숫자를 출력
                sb.append(pw.get(i) + " ");
            }
            System.out.println(sb); // 답 출력
        }
    }
}