728x90
https://www.acmicpc.net/problem/1021
deque, 즉 덱을 사용하여 문제를 해결하면 된다!
덱의 사이즈의 절반까지의 값중에 해당 값이 존재하면 offerLast()
앞쪽에 없다면 offerFirst()하면 되겠다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
LinkedList<Integer> q = new LinkedList<>();
for (int i = 1; i < n + 1; i++) {
q.add(i);
}
StringBuilder sb = new StringBuilder();
int count = 0;
st = new StringTokenizer(br.readLine());
for (int i = 0; i < m; i++) {
int num = Integer.parseInt(st.nextToken());
boolean check = false;
for (int j = 0; j <= q.size() / 2; j++) {
if (num == q.get(j)) {
check = true;
break;
}
}
if (check) {
while (num != q.peek()) {
q.offerLast(q.poll());
count++;
}
} else {
while (num != q.peek()) {
q.offerFirst(q.pollLast());
count++;
}
}
q.poll();
}
sb.append(count);
System.out.println(sb);
}
}
'Java' 카테고리의 다른 글
[백준 1202] 보석 도둑 (JAVA) (0) | 2023.02.15 |
---|---|
[백준 2661] 좋은수열 (JAVA) (0) | 2023.02.15 |
[백준 1699] 제곱수의 합 (JAVA) (0) | 2023.02.08 |
[백준 1697] 숨바꼭질 (JAVA) (0) | 2023.02.08 |
[백준 1309] 동물원 (JAVA) (0) | 2023.02.08 |