From 9749275e8b51f1c0cf43c5742e5a6738b218ae26 Mon Sep 17 00:00:00 2001 From: belowyoon <92996412+belowyoon@users.noreply.github.com> Date: Fri, 26 Apr 2024 22:19:42 +0900 Subject: [PATCH] =?UTF-8?q?[Gold=20II]=20Title:=20=EA=B0=80=EC=9A=B4?= =?UTF-8?q?=EB=8D=B0=EB=A5=BC=20=EB=A7=90=ED=95=B4=EC=9A=94,=20Time:=2028?= =?UTF-8?q?=20ms,=20Memory:=202840=20KB=20-BaekjoonHub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md" | 30 +++++++++++ ...05\353\247\220\355\225\264\354\232\224.cc" | 51 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 "\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/README.md" create mode 100644 "\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224.cc" diff --git "a/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/README.md" "b/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/README.md" new file mode 100644 index 0000000..07fd624 --- /dev/null +++ "b/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/README.md" @@ -0,0 +1,30 @@ +# [Gold II] 가운데를 말해요 - 1655 + +[문제 링크](https://www.acmicpc.net/problem/1655) + +### 성능 요약 + +메모리: 2840 KB, 시간: 28 ms + +### 분류 + +자료 구조, 우선순위 큐 + +### 제출 일자 + +2024년 4월 26일 22:19:32 + +### 문제 설명 + +

백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다.

+ +

예를 들어 백준이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1, 2, 2, 2, 2, 5를 차례대로 말해야 한다. 백준이가 외치는 수가 주어졌을 때, 동생이 말해야 하는 수를 구하는 프로그램을 작성하시오.

+ +### 입력 + +

첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -10,000보다 크거나 같고, 10,000보다 작거나 같다.

+ +### 출력 + +

한 줄에 하나씩 N줄에 걸쳐 백준이의 동생이 말해야 하는 수를 순서대로 출력한다.

+ diff --git "a/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224.cc" "b/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224.cc" new file mode 100644 index 0000000..f999b58 --- /dev/null +++ "b/\353\260\261\354\244\200/Gold/1655.\342\200\205\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224/\352\260\200\354\232\264\353\215\260\353\245\274\342\200\205\353\247\220\355\225\264\354\232\224.cc" @@ -0,0 +1,51 @@ +#include +#include +#include +#include + +using namespace std; + +int main() { + ios_base::sync_with_stdio(0); + cin.tie(0); + + int n; + cin >> n; + + priority_queue l; + priority_queue, greater> r; + + int x; + for (int i = 0; i < n; i++) { + cin >> x; + if (l.size() > r.size()) { + if (x >= l.top()) { + r.push(x); + } else { + r.push(l.top()); + l.pop(); + l.push(x); + } + } else if (l.size() < r.size()) { + if (x <= r.top()) { + l.push(x); + } else { + l.push(r.top()); + r.pop(); + r.push(x); + } + } else { + if (r.empty()) { + r.push(x); + } + else if (x > r.top()) { + r.push(x); + } else { + l.push(x); + } + } + if (l.size() < r.size()) cout << r.top() << '\n'; + else cout << l.top() << '\n'; + } + return 0; +}