1228 암호문1

Sungmin·2023년 11월 8일
0

SWEA 알고리즘

목록 보기
17/26

암호문1 URL

Solution

import java.io.*;
import java.util.*;

public class SW1228 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        for (int t = 1; t <= 10; t++) {
            List<Integer> list = new LinkedList<>();
            int N = Integer.parseInt(br.readLine()); //첫번째 줄
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++) { 
                list.add(Integer.parseInt(st.nextToken())); //두번째 줄
            }
            int M = Integer.parseInt(br.readLine()); //세번째 줄
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < M; i++) {
                if (st.nextToken().equals("I")) {
                    int x = Integer.parseInt(st.nextToken());
                    int y = Integer.parseInt(st.nextToken());

                    for (int j = 0; j < y; j++) {
                        list.add(x, Integer.parseInt(st.nextToken()));
                        x++;
                    }
                }
            }
            System.out.print("#" + t + " ");
            for (int i = 0; i < 10; i++) {
                System.out.print(list.get(i) + " ");
            }
            System.out.println();
        }
    }
}

배운점

이 문제는 문제를 이해하는데 시간이 엄청 오래걸린 문제다.

처음엔 모든 x를 입력받은 뒤 순서대로 넣어주는건가 싶어서 test를 보며 하나씩 값을 넣어가며 비교해 봤고 아니라는 것을 알게 되었다.

그 후 원본암호문에 대입을 하는건가 싶어서 생각나는 케이스를 하나씩 해 봤고 결국 방법을 찾게 되었다.

풀이

1. LinkedList를 선언한다.
2. 기존 암호를 전부 리스트에 담는다.
3. "I"가 등장할 경우 x와 y를 입력받고 리스트에 x번째 인덱스에 y번 담아준다. x는 +1씩 늘려야 한다.

profile
Let's Coding

0개의 댓글