백준 1021 회전하는 큐 JAVA

sundays·2023년 10월 11일
0

문제

회전하는 큐

풀이

이 문제는 이 큐에 있는 위치를 리턴해야 하는데 이 위치가 어디에 있냐에 따라서 뒤에서 부터 꺼내거나 앞에서 부터꺼내거나를 정해야 한다. 대부분 indexOf로 찾는데 이 API는 linkedlist에만 존재 한다

...
for (int i = 0; i < m; i++) {
	// 찾아야 하는 값
    int k = arr[i];
    
    // 찾아야 하는 값이 앞에 없으면
    while(k != d.getFirst()) {
    	// 큐에 상대적으로 앞에 있으면
    	if (d.indexOf(k) <= d.size() / 2) {
        	int front = d.pollFirst(); // 가장 앞에 있는 것을 꺼내서
            d.addLast(front); // 가장 마지막에 넣어주고
        } else {
        	int tail = d.pollLast(); // 가장 마지막에 있는것을
            d.addFirst(tail); // 가장 앞에 넣어준다
        }
        answer++;
    }
    
  	// 찾아야 하는 값이 앞에 있으면 꺼낸다
    if (k == d.getFirst()) {
    	d.pollFirst();
    }
}
...

전체 코드

전체 코드

profile
develop life

0개의 댓글