이번 문제는 덱을 사용하는 문제였습니다.
2학년 1학기 자료구조 수업에서 덱큐를 강의로 배웠음에도 불구하고 본 문제가 무엇을 사용하는지 많이 방황하였습니다.
큐에 관한 문제를 푸는데 있어 잘 생각이 나지 않을까 걱정하였으나 코드를 치다보니 하나씩 떠오르는게 자신이 학기중에 공부를 하긴 했구나 라는 생각이 들었습니다.
다만 과제를 통하여 작성한 Circle Queue 나 array 로 구현한 Queue 는 생각이 나지만 과제수행을 하지 않았던 부분에서는 잘 생각이 안나 다시 자료를 찾아 보게 되었습니다.
방학기간 다시한번 자료구조를 복습하여 기초를 다져야겠습니다.
본 문제는 혼자 힘으로 푼것이 아닌 구글의 도움을 받아 작성하였고, 코드는 완전 유사하다고 볼 수 있습니다.
따라서 참고한 블로그 링크를 남기겠습니다.
https://st-lab.tistory.com/216
아직도 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
// 큐의 기본 개념 , circle Queue, Double Ended Queue 복습 백준 자바 풀이
'모각코 > 2021_summer_모각코' 카테고리의 다른 글
2021_summer_모각코] LIE 또! 팀 - 3차시 결과 (0) | 2021.07.21 |
---|---|
2021_summer_모각코] LIE 또! 팀 - 3차시 계획 (0) | 2021.07.21 |
2021_summer_모각코] LIE 또! 팀 - 2차시 계획 (0) | 2021.07.14 |
2021_summer_모각코] LIE 또! 팀 - 1차시 결과 (0) | 2021.06.30 |
2021_summer_모각코] LIE 또! 팀 - 1차시 계획 (0) | 2021.06.30 |
댓글