본문 바로가기
Problem Solving/SWEA

[SWEA] 1230. 암호문3

by 테리는당근을좋아해 2020. 2. 9.

문제

0 ~ 999999 사이의 수가 나열된 암호문이 있을 때, 명령에 따라 암호문을 수정하는 문제

 

명령문>
I(삽입) x, y, s : x는 삽입할 인덱스, y는 삽입할 숫자의 수, s는 삽입할 숫자들

D(삭제) x, y : x는 삭제할 데이터의 인덱스, y는 삭제할 데이터의 수

A(추가) y, s : 암호문의 맨 뒤에 y개의 숫자를 덧붙인다. s는 덧붙일 숫자들

 

풀이방법

데이터의 삽입이 많은 문제로 연결리스트 구조를 사용해 연산의 수를 줄인다

 

소스코드

package samsung;

import java.util.*;

public class s_1230 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		for(int t = 1; t <= 10; t++) {
			int n = sc.nextInt();
			LinkedList <Integer> l = new LinkedList<>();
			for(int i = 0; i < n; i++) {
				int tmp = sc.nextInt();
				l.add(tmp);
			}
			int c = sc.nextInt();
			for(int i = 0; i < c; i++) {
				String s = sc.next();
				if(s.equals("I")) {
					int x = sc.nextInt();
					int y = sc.nextInt();
					int[] a = new int[y];
					for(int j = 0; j < y; j++) {
						a[j] = sc.nextInt();
					}
					
					for(int j = y-1; j >= 0; j--) {
						l.add(x, a[j]);
					}
				}
				else if(s.equals("D")) {
					int x = sc.nextInt();
					int y = sc.nextInt();
					for(int j = 0; j < y; j++) {
						l.remove(x);
					}
				}
				else if(s.equals("A")) {
					int y = sc.nextInt();
					int[] a = new int[y];
					for(int j = 0; j < y; j++) {
						a[j] = sc.nextInt();
					}
					
					for(int j = y-1; j >= 0; j--) {
						l.addLast(a[j]);
					}
				}
			}
			System.out.print("#" + t + " ");
			for(int i = 0; i < 10; i++) {
				System.out.print(l.get(i) + " ");
			}
			System.out.println();
		}
	}
}

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA] 1285. 아름이의 돌 던지기  (0) 2020.02.09
[SWEA] 1234. 비밀번호  (0) 2020.02.09
[SWEA] 1229. 암호문2  (0) 2020.02.09
[SWEA] 1940. 가랏! RC카!  (0) 2020.02.05
[SWEA] 1288. 새로운 불면증 치료법  (0) 2020.02.05

댓글