728x90
✅ 문제 요약
n길이의 암호문이 주어지고 삽입 명령어 I와 삭제 명령어 D가 주어졌을 때
각 명령어를 수행한 뒤 암호문의 앞에서부터 10가지 원소를 출력하라
🤔 문제 풀이
별다른 알고리즘을 사용할 필요는 없었다.
암호문 저장을 위해 ArrayList<String>을 사용했고
삽입 명령어 같은 경우 삽입해야 하는 숫자들을 순차적으로 삽입해야 하므로
pos위치에서 삽입을 수행할 때마다 pos++로 그 위치를 조정해주었다.
위치 조정이 없다면 오히려 거꾸로 삽입이 될 수 있으니 주의!
삭제 명령어를 수행할 경우 pos위치의 원소를 삭제한 뒤, 삭제한 위치 뒤에 있는
원소들이 자동으로 앞 인덱스로 위치가 옮겨지기 때문에 삭제 명령 위치 조정은 필요하지 않았다.
🚨 CODE
import java.util.*;
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int testCase = 10;
for (int t = 1; t <= testCase; t++) {
int n = Integer.parseInt(br.readLine());
LinkedList<String> list = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i<n; i++) {
list.add(st.nextToken());
}
int opLen = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for(int i = 0; i<opLen; i++) {
String op = st.nextToken();
int pos = Integer.parseInt(st.nextToken());
int addict = Integer.parseInt(st.nextToken());
if(op.equals("I")) {
for(int j = 0; j<addict; j++) {
String newElement = st.nextToken();
list.add(pos++, newElement);
}
}else {
for(int j = 0; j<addict; j++) {
list.remove(pos);
}
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i<10; i++) {
sb.append(list.get(i)).append(" ");
}
bw.write(String.format("#%d %s\n", t, sb.toString()));
} // testcase
bw.flush();
}
}
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[JAVA-D3] SWEA 7193 - 승현이의 수학공부 (0) | 2024.05.06 |
---|---|
[JAVA-D3] SWEA 7272 - 안경이 없어! (0) | 2024.05.03 |
[JAVA-D3] SWEA 5789 - 현주의 상자 바꾸기 (0) | 2024.05.03 |
[JAVA-D3] SWEA 4047 - 영준이의 카드 카운팅 (0) | 2024.05.03 |
[JAVA-D3] SWEA 9280 - 진용이네 주차타워 (0) | 2024.05.03 |