본문 바로가기

알고리즘 문제풀이/SWEA

[SWEA 1230] 암호문3 with JAVA

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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

class Solution
{
    public static void main(String args[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        for(int test_case = 1; test_case <= 10; test_case++)
        {
            st = new StringTokenizer(br.readLine());
            int N = Integer.parseInt(st.nextToken());
            st = new StringTokenizer(br.readLine());

            List<Integer> script = new LinkedList<>();
            for (int i = 0; i < N; i++){
                script.add(Integer.parseInt(st.nextToken()));
            }

            st = new StringTokenizer(br.readLine());
            int M = Integer.parseInt(st.nextToken());
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < M; i++){
                String cmd = st.nextToken();
                if (cmd.equals("I")){
                    insert(script, st);
                }
                else if (cmd.equals("D")){
                    delete(script, st);
                }
                else {
                    add(script, st);
                }
            }
            sb.append("#").append(test_case).append(" ");
            for (int i = 0; i < 10; i++){
                sb.append(script.get(i)).append(" ");
            }
            sb.append("\n");
        }
        System.out.println(sb);
    }
    public static void insert(List<Integer> script, StringTokenizer st){
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        for (int i = 0; i < y; i++){
            script.add(x + i, Integer.parseInt(st.nextToken()));
        }
    }
    public static void delete(List<Integer> script, StringTokenizer st){
        int x = Integer.parseInt(st.nextToken());
        int y = Integer.parseInt(st.nextToken());
        for (int i = 0; i < y; i++){
            script.remove(x);
        }
    }
    public static void add(List<Integer> script, StringTokenizer st){
        int y = Integer.parseInt(st.nextToken());
        for (int i = 0; i < y; i++){
            script.add(Integer.parseInt(st.nextToken()));
        }
    }
}

1. 어려웠던 점:

 - X

 

2. 알게된 점:

- 리스트, 구현 연습

3. 알고리즘 풀이:

- insert, delete, add로 모듈화하면 한결 쉽다.

insert의 경우, 원소를 넣으면 위치가 변하는 점을 유의해 함수를 작성한다.