링크텍스트
내 풀이
import java.io.*;
import java.util.*;
public class Solution {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int t = 1; t <= 10; t++) {
int N = Integer.parseInt(br.readLine());
List<Integer> list = new LinkedList<>();
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++;
}
} else if (st.nextToken().equals("D")) {
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
for (int j = 0; j < y; j++) {
list.remove(x);
}
} else if (st.nextToken().equals("A")) {
int y = Integer.parseInt(st.nextToken());
for (int j = 0; j < y; j++) {
list.add(Integer.parseInt(st.nextToken()));
}
}
}
sb.append("#").append(t).append(" ");
for (int i = 0; i < 10; i++) {
sb.append(list.get(i)).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
Solution
import java.io.*;
import java.util.*;
public class Solution {
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int t = 1; t <= 10; t++) {
int N = Integer.parseInt(br.readLine());
List<Integer> list = new LinkedList<>();
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());
while (st.hasMoreTokens()) {
String cmd = st.nextToken();
if (cmd.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++;
}
} else if (cmd.equals("D")) {
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
for (int j = 0; j < y; j++) {
list.remove(x);
}
} else if (cmd.equals("A")) {
int y = Integer.parseInt(st.nextToken());
for (int j = 0; j < y; j++) {
list.add(Integer.parseInt(st.nextToken()));
}
}
}
sb.append("#").append(t).append(" ");
for (int i = 0; i < 10; i++) {
sb.append(list.get(i)).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
배운점
최근에 풀었던 암호문2 문제와 거의 유사한 문제였다.
풀이 방식도 크게 다르지 않아 쉽게 풀어나갔는데 계속 결과가 다르게 나오는 일이 발생하였다.
문제는 입력을 잘못받고있었다.
내 풀이에서 보면 st.nextToken()을 조건 안에서 받았는데 암호2풀땐 문제가 안됐던게 확인할 문자가 "I" 밖에 없었기 때문이다.
이번엔 확인할 문자가 3개가 되었고 입력은 한번에 받아 확인해줘야 한다.