728x90
https://www.acmicpc.net/problem/1021
package BKD_0x7_Deque;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class BOJ_1021 {
public static void main(String[] args) throws IOException {
LinkedList<Integer> dq = new LinkedList<>();
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());
int count =0;
String input_str[] = br.readLine().split(" ");
ArrayList<Integer> input = new ArrayList<>();
for(int i=1;i<=N;i++) dq.add(i);
for(String str : input_str) input.add(Integer.parseInt(str));
for(int i=0;i<M;i++){
int target = input.get(i);
int mid = dq.size()/2;
while(true){
int target_idx = dq.indexOf(target);
if(target_idx==0) {dq.poll(); break;}
else if (target_idx<=mid) {
int temp = dq.peek();
dq.poll();
dq.addLast(temp);
count++;
}
else if(target_idx>mid){
int temp = dq.peekLast();
dq.pollLast();
dq.addFirst(temp);
count++;
}
else break;
}
}
System.out.println(count);
br.close();
}
}
풀이
1. index_of() 함수를 사용하여 타겟의 위치를 알아낸다
2_1. index가 0일경우 해당 타겟을 뽑아낸다.
2_2. 왼쪽에 치우쳐있을 경우 2번 연산을 진행한다
2_3. 오른쪽에 가까울 경우 3번연산을 진행한다.
3. 입력한 타겟 개수만큼 진행한다.
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
54 삐약 : 백준 2178| 미로탐색 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.05.23 |
---|---|
53 삐약 : 백준 5430| 회전하는큐 [바킹독 문제 풀이Deque|JAVA] (0) | 2024.05.22 |
51 삐약 : 백준 1926| 그림 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.01.02 |
50 삐약 : 백준 2504| 괄호의 값 [바킹독 문제 풀이|Stack|JAVA] (0) | 2023.12.29 |
49 삐약 : 백준 10799| 쇠막대기 [바킹독 문제 풀이|Stack|JAVA] (0) | 2023.12.20 |