[SWEA] 1228. 암호문1 _ Java

jii0_0·2022년 8월 19일
0

SW Expert Academy

목록 보기
22/33
post-thumbnail

[S/W 문제해결 기본] 8일차 - 암호문1 (D3)

문제 링크

  • 원본 암호에서 명령어에 따라 암호문을 변경한 결과를 출력하는 문제이다.
  • 명령어
    • I(삽입) x, y, s : 앞에서부터 x의 위치 바로 다음에 y개의 숫자를 삽입한다. s는 덧붙일 숫자들이다.
  • 삽입이 자주 이뤄지므로 LinkedList로 구현했다.

Solution

package swea;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;

// [S/W 문제해결 기본] 8일차 - 암호문1
public class p1228 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer stk;
		LinkedList<String> password;
		for (int t = 1; t <= 10; t++) {
			password = new LinkedList<>();
			br.readLine(); // 원본 암호문의 길이
			stk = new StringTokenizer(br.readLine(), " ");// 원본 암호문
			while (stk.hasMoreTokens()) {
				password.add(stk.nextToken());
			}

			br.readLine(); // 명령어의 개수
			stk = new StringTokenizer(br.readLine(), " "); // 명령어
			int x, y;
			while (stk.hasMoreTokens()) {
				stk.nextToken();
				x = Integer.parseInt(stk.nextToken());
				y = Integer.parseInt(stk.nextToken());
				for (int i = 0; i < y; i++) {
					password.add(x++, stk.nextToken());
				}
			}

			System.out.print("#" + t);
			for (int i = 0; i < 10; i++) {
				System.out.print(" " + password.get(i));
			}
			System.out.println();
		}

	}

}
profile
느려도 꾸준히

0개의 댓글