본문 바로가기
온라인 저지/BOJ

[BOJ/Java] 1021 회전하는 큐

by ahj 2022. 2. 13.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class BOJ1021 {
	static BufferedReader br;
	static StringTokenizer st;
	static LinkedList<Integer> dq;
	static int n, m, total, tmp, i;

	public static void main(String[] args) throws Exception {
		br = new BufferedReader(new InputStreamReader(System.in));

		st = new StringTokenizer(br.readLine());
		n = Integer.parseInt(st.nextToken());
		m = Integer.parseInt(st.nextToken());
		dq = new LinkedList<Integer>();
		for (i = 1; i <= n; i++) {
			dq.add(i);
		}

		st = new StringTokenizer(br.readLine());
		total = 0;
		for (i = 0; i < m; i++) {
			tmp = Integer.parseInt(st.nextToken());

			if (dq.indexOf(tmp) > dq.size() / 2) {
				while (dq.peek() != tmp) {
					dq.addFirst(dq.pollLast());
					total++;
				}
			} else {
				while (dq.peek() != tmp) {
					dq.add(dq.poll());
					total++;
				}
			}
			dq.poll();
		}
		System.out.println(total);
	}
}

예상치도 못하게 오래 걸린 문제.
아이디어를 떠올리지 못해서 2시간을 날림... 풀고보니 꽤나 간단한 문제였는데 왜 이렇게 오랫동안 아이디어를 떠올리지 못한건지 모르겠다 😢 잘못된 방법이라는 느낌을 받으면 다른 방법을 찾아야 할텐데, 그 생각에 너무 매몰 되어있던 것 같다.
또 array였다면 쉽게 indexOf를 떠올렸을텐데, 오히려 queue, deque에서는 내부 요소의 index를 볼 수 없다는 생각에 사로잡혀서, 다른 방법으로 접근할 수는 없을까 너무 집착하다가 날린 시간이 아깝다.
자료구조 문제를 풀때, index도 활용하는 방향으로 생각을 환기해야겠다. 또한 쉽게 아이디어가 떠오르지 않다면 빠르게 다른 문제로 넘어가는 방법도 생각할 것!

'온라인 저지 > BOJ' 카테고리의 다른 글

[BOJ/Java] 1436 영화감독 숌  (0) 2022.02.13
[BOJ/Java] 1406 에디터  (0) 2022.02.13
[BOJ/Java] 2563 색종이  (0) 2022.02.11
[BOJ/Java] 1158 요세푸스 문제  (0) 2022.02.10
[BOJ/Java] 13335 트럭  (0) 2022.02.10

댓글