-
[java] 1021: 회전하는 큐알고리즘 2023. 4. 11. 22:28
덱
문제
https://www.acmicpc.net/problem/1021
1021번: 회전하는 큐
첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가
www.acmicpc.net
풀이
package main; import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); LinkedList<Integer> deque = new LinkedList<Integer>(); int count = 0; int N= kb.nextInt(); int M= kb.nextInt(); //덱에 담기 for(int i=1; i<=N; i++) { deque.offer(i); } int[] arr = new int[M]; for(int i=0; i<M; i++) { arr[i]= kb.nextInt(); } for(int i=0; i<M; i++) { int target_idx = deque.indexOf(arr[i]); int half_idx; if(deque.size()%2==0) { half_idx = deque.size()/2 -1; }else { half_idx = deque.size()/2; } //중간지점 보다 앞에 있을 경우 if(target_idx <= half_idx) { for(int j=0; j< target_idx; j++) { int tmp = deque.pollFirst(); //2번 연산, 앞원소를 뽑아서 뒤로 deque.offerLast(tmp); count++; } }else { //중간지점 보다 뒤에 3번연산, 뒤원소를 앞으로 for(int j=0;j<deque.size()-target_idx; j++) { int tmp = deque.pollLast(); deque.offerFirst(tmp); count++; } } //1번 연산 deque.pollFirst(); } System.out.println(count); } }
참고블로그
설명을 잘하셔서 덱을 이해하는데 도움이 됨
https://st-lab.tistory.com/216
[백준] 1021번 : 회전하는 큐 - JAVA [자바]
www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는
st-lab.tistory.com
'알고리즘' 카테고리의 다른 글
[java] 백준 18352 : 특정 거리의 도시찾기 (0) 2023.04.17 [java] LeetCode 234. Palindrome Linked List (0) 2023.04.12 [java] 백준 1697:숨바꼭질 (0) 2023.04.11 [java] 백준 11724: 연결 요소의 개수 (0) 2023.04.11 [java] 백준 13023: ABCDE (0) 2023.04.11