๋ฐฑ์ค์ด๋ ๋์์๊ฒ "๊ฐ์ด๋ฐ๋ฅผ ๋งํด์" ๊ฒ์์ ๊ฐ๋ฅด์ณ์ฃผ๊ณ ์๋ค. ๋ฐฑ์ค์ด๊ฐ ์ ์๋ฅผ ํ๋์ฉ ์ธ์น ๋๋ง๋ค ๋์์ ์ง๊ธ๊น์ง ๋ฐฑ์ค์ด๊ฐ ๋งํ ์ ์ค์์ ์ค๊ฐ๊ฐ์ ๋งํด์ผ ํ๋ค. ๋ง์ฝ, ๊ทธ๋์ ๋ฐฑ์ค์ด๊ฐ ์ธ์น ์์ ๊ฐ์๊ฐ ์ง์๊ฐ๋ผ๋ฉด ์ค๊ฐ์ ์๋ ๋ ์ ์ค์์ ์์ ์๋ฅผ ๋งํด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด ๋ฐฑ์ค์ด๊ฐ ๋์์๊ฒ 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์ค์ ๊ฑธ์ณ ๋ฐฑ์ค์ด์ ๋์์ด ๋งํด์ผ ํ๋ ์๋ฅผ ์์๋๋ก ์ถ๋ ฅํ๋ค.
๐ก ๋ฐ ์๋ผ์ ์์ ์๋ฅผ ๋ฃ๋ ํ์ด s(mall), ํฐ ์๋ฅผ ๋ฃ๋ ํ์ด b(ig)์ small์ ์ต๋ํ, big์ ์ต์ํ์ผ๋ก ๊ตฌํํจ
๐ก ๋์ ํฌ๊ธฐ๊ฐ ๊ฐ์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก s์ ๋ฃ๊ณ , ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๋ฉด b์ ๋ฃ์
๐ก ๋ง์ผ b์ ์ต์๊ฐ์ด s์ ์ต๋๊ฐ๋ณด๋ค ์์ผ๋ฉด ๋ ๊ฐ๋ฅผ ๊ตํํด์ค
PriorityQueue<Integer> s = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> b = new PriorityQueue<>();
if(s.size() == b.size()) {
s.add(Integer.parseInt(br.readLine()));
} else {
b.add(Integer.parseInt(br.readLine()));
}
if(!s.isEmpty() && !b.isEmpty()) {
if(b.peek() < s.peek()) {
int tmp = b.poll();
b.add(s.poll());
s.add(tmp);
}
}
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.PriorityQueue;
import java.util.Collections;
public class BOJ_1655 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
PriorityQueue<Integer> s = new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> b = new PriorityQueue<>();
for(int i=0; i<n; i++) {
if(s.size() == b.size()) {
s.add(Integer.parseInt(br.readLine()));
} else {
b.add(Integer.parseInt(br.readLine()));
}
if(!s.isEmpty() && !b.isEmpty()) {
if(b.peek() < s.peek()) {
int tmp = b.poll();
b.add(s.poll());
s.add(tmp);
}
}
sb.append(Integer.toString(s.peek()));
sb.append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
์ฑ๊ณตโจ