본문 바로가기

JAVA

BAEKJOON(백준) Deque - 1021번 JAVA CODE

틀린 코드

ㅇ아아아앙아ㅏㄱ아거ㅡㅏㅣㄴ어ㅏㄴ걷ㄴㅇㄱ나오라ㅓㄴ러ㅏ ㄴ

이게 왜 틜너아ㅣ러내ㅑ러잘ㄴ아ㅣ러니아러재ㅑㅗ느,어나엃;ㅈㄷ힌ㅇ라너

아오

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
import java.util.Deque;
import java.util.LinkedList;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		Deque<Integer> number = new LinkedList<>();
		
		String[] str;
		
		str = br.readLine().split(" ");
		int N = Integer.parseInt(str[0]);
		int M = Integer.parseInt(str[1]);
		
		int[] arr = new int[M];
		
		//뽑아내고자하는 숫자 입력받기
		str = (br.readLine().split(" "));
		for(int i=0; i<M; i++)
			arr[i] = Integer.parseInt(str[i]);
		
		System.out.println(N);
		System.out.println(M);
		//for(int i=0; i<M; i++)
		//	System.out.println(arr[i]);
		
		for(int i=0; i<N; N++)
			number.add(i+1);
	
		//StringTokenizer command;
	
		//연산횟수
		int count = 0;
		
		for(int i=0; i<M; i++) {
			int mid = N/2;
			
			if(arr[i] > mid) {
				while(true) {
					if(arr[i] == number.peekFirst())
						break;
					int last = number.peekLast();
					number.removeLast();
					number.addFirst(last);
					count++;	
				}
			}
			
			else if(arr[i] < mid) {
				while(true) {
					if(arr[i] == number.peekFirst())
						break;
					int first = number.peekFirst();
					number.removeFirst();
					number.addLast(first);
					count++;
				}
			}
		}

		System.out.println(count);
	}
}

 

 

맞는 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class Main {

	static int N, M;
	static StringBuilder sb = new StringBuilder();
	static int count = 0;
	static LinkedList<Integer> q = new LinkedList<>();
	
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		st = new StringTokenizer(br.readLine());
		
		int[] temp = new int[M];
		for(int i = 0 ; i < M ; i++)
			temp[i] = Integer.parseInt(st.nextToken());
		
		for(int i = 1 ; i <= N ; i++)
			q.add(i);
		
		for(int i = 0 ; i < M ; i++) {
			
			if(check(temp[i])) {
				while(temp[i]!=q.get(0)) {
				q.addLast(q.pollFirst());
				count++;
				}
			}else {
				while(temp[i]!=q.get(0)) {
				q.addFirst(q.pollLast());
				count++;
				}
			}
			
			q.poll();
		}

		
		System.out.println(count);

		}
	public static boolean check(int a) {
		
		for(int i = 0 ; i <= q.size()/2 ; i++) {
			if(a == q.get(i))
				return true;
		}
		
		return false;
	}

}