Skip to content

Commit

Permalink
[Gold II] Title: 가운데를 말해요, Time: 28 ms, Memory: 2840 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
belowyoon committed Apr 26, 2024
1 parent aa37272 commit 9749275
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
30 changes: 30 additions & 0 deletions 백준/Gold/1655. 가운데를 말해요/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# [Gold II] 가운데를 말해요 - 1655

[문제 링크](https://www.acmicpc.net/problem/1655)

### 성능 요약

메모리: 2840 KB, 시간: 28 ms

### 분류

자료 구조, 우선순위 큐

### 제출 일자

2024년 4월 26일 22:19:32

### 문제 설명

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

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

### 입력

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

### 출력

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>

using namespace std;

int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);

int n;
cin >> n;

priority_queue<int> l;
priority_queue<int, vector<int>, greater<int>> 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;
}

0 comments on commit 9749275

Please sign in to comment.