BOJ [BJ] 01655. 가운데를 말해요. - 728x90 BJ 01655 가운데를 말해요 문제링크 https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net * 일단 문제를 정독 하고 1시간 이상 반드시 고민이 필요합니다. 동영상 설명 1시간 이상 고민 했지만 아이디어가 떠오르지 않는다면 동영상에서 약간의 힌트를 얻어봅시다. 구독도 누를께요. https://youtu.be/E6W0ySoRygQ 소스보기 동영상 설명을 보고도 전혀 구현이 안된다면 연습 부족입니다. 소스를 보고 작성해 본 후 스스로 백지 상태에서 3번 작성해 볼 의지가 있다면 소스를 살짝 보세요. 꼭 작성할 각오가 되어있습니다. package bj.gold.l2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StringReader; import java.util.Collections; import java.util.PriorityQueue; import java.util.StringTokenizer; public class BJ_G2_01655_가운데를말해요 { private static BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); private static StringBuilder output = new StringBuilder(); private static int N; private static PriorityQueue<Integer> maxPq, minPq; public static void main(String[] args) throws IOException { input = new BufferedReader(new StringReader(src)); N = Integer.parseInt(input.readLine()); maxPq = new PriorityQueue<>(Collections.reverseOrder()); // 역순(큰 값 부터 나올 수 있게) minPq = new PriorityQueue<>(); // 작은 값이 맨 앞에 boolean isOdd = true; for(int n=0; n<N; n++){ int num = Integer.parseInt(input.readLine()); if(isOdd){ maxPq.offer(num); }else{ minPq.offer(num); } // 자리 교환 필요 if(!minPq.isEmpty() && maxPq.peek() > minPq.peek()){ minPq.offer(maxPq.poll()); maxPq.offer(minPq.poll()); } // 중간값은 왼쪽 maxPq에 존재 output.append(maxPq.peek()).append("\n"); isOdd = !isOdd; } System.out.println(output); } } 728x90 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기알고보면 참 쉬운 Algo Contents BJ01655가운데를말해요 문제링크 동영상설명 소스보기 당신이 좋아할만한 콘텐츠 [BJ]17213. 과일서리 2022.12.13 [BJ]S2_12891_DNA문자열 2022.12.01 [BJ]1342. 행운의 문자열 2022.08.14 [BJ]G3 10986. 나머지 합 2022.08.04 댓글 0 + 이전 댓글 더보기