본문 바로가기
모각코/2021_summer_모각코

2021_summer_모각코] LIE 또! 팀 - 2차시 결과

by 호상 🐧 2021. 7. 14.

이번 문제는 덱을 사용하는 문제였습니다.

2학년 1학기 자료구조 수업에서 덱큐를 강의로 배웠음에도 불구하고 본 문제가 무엇을 사용하는지 많이 방황하였습니다.

 

큐에 관한 문제를 푸는데 있어 잘 생각이 나지 않을까 걱정하였으나 코드를 치다보니 하나씩 떠오르는게 자신이 학기중에 공부를 하긴 했구나 라는 생각이 들었습니다.

 

다만 과제를 통하여 작성한 Circle Queue 나 array 로 구현한 Queue 는 생각이 나지만 과제수행을 하지 않았던 부분에서는 잘 생각이 안나 다시 자료를 찾아 보게 되었습니다.

 

방학기간 다시한번 자료구조를 복습하여 기초를 다져야겠습니다.

 

본 문제는 혼자 힘으로 푼것이 아닌 구글의 도움을 받아 작성하였고, 코드는 완전 유사하다고 볼 수 있습니다.

따라서 참고한 블로그 링크를 남기겠습니다.

 

https://st-lab.tistory.com/216

 

[백준] 1021번 : 회전하는 큐 - JAVA [자바]

www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는

st-lab.tistory.com

 

아직도 BufferReader 와 StringTokenizer 의 사용이 유연하지 못해 많은 문제를 더 풀어봐야겠다는 생각이 듭니다..

 

import java.util.*;
import java.io.*;

public class Main {
	
	public static void main(String[] args) throws IOException{
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
		
		LinkedList<Integer> que = new LinkedList<Integer>();
	
		int size , count;
		int serch = 0;
		
		size = Integer.parseInt(st.nextToken());
		count = Integer.parseInt(st.nextToken());

		for(int i = 1; i <= size; i++) {
			que.offer(i);
		}

		int[] input = new int[count];
		st = new StringTokenizer(bf.readLine(), " ");
		for(int i = 0; i < count; i++) {
			input[i] = Integer.parseInt(st.nextToken());
		}
		
		for(int i = 0 ; i < count; i++) {
			
			int point_dex = que.indexOf(input[i]);
			int half_dex;
			
			if(que.size()%2 == 0) {
				half_dex = que.size()/2 -1;
			}
			else {
				half_dex = que.size()/2;
			}
			
			if(half_dex >= point_dex) {
				for(int j = 0; j < point_dex; j++) {
					int moveElement = que.pollFirst();
					que.offerLast(moveElement);
					serch++;
				}
			}
			else {
				for(int j = 0; j < que.size() - point_dex; j++) {
					int moveElement = que.pollLast();
					que.offerFirst(moveElement);
					serch++;
				}
			}
			que.pollFirst();
		}
		
		System.out.println(serch);

	}
	
}

https://www.acmicpc.net/problem/1021

 

1021번: 회전하는 큐

첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가

www.acmicpc.net

 

// 큐의 기본 개념 , circle Queue, Double Ended Queue 복습 백준 자바 풀이

댓글