일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- BAEKJOON
- 이더리움
- Refactoring
- 러스트
- RabbitMQ
- Python
- Container
- docker
- Network
- 백준
- Kubernetes
- dockerfile
- 블록체인
- 플랫폼
- 파이썬
- BlockChain
- 알고리즘
- rust
- Ethereum
- AWS
- Thread
- guru
- 전문가를 위한 파이썬
- 코어 이더리움 프로그래밍
- Fast API
- function
- Algorithm
- 동시성
- fluent python
- IMAGE
Archives
- Today
- Total
글쓰기 | 방명록 | 관리 |
Victoree's Blog
2075_N번째 큰 수 본문
728x90
Concept & Idea
처음에 문제 이해가 잘 안되서 좀 당황했다. 나는 N번째 큰수 라는 제목을 보고 왜 뒤에서 N번째로 큰수라고 해석했는지..
문제는 간단하다. 입력대로 받은 수 중에 N번째로 큰수를 찾으면 되는 문제!
이 문제에 키포인트는 메모리에 있다.
N이 1500이면 우선순위큐에 데이터를 1500*1500개까지 받을 것이냐?
그렇지 않다.
어차피 앞에서 몇번째로 큰지가 중요하기 때문에 뒤에서 뒤에 쓸모없는 작은 숫자들은 버려져도 된다.
처음엔 어떻게 해서 뒤에 녀석들을 다 빼지..?
포문을 돌려..? 라는 생각을 했으나 전체 수에 -를 곱해서 넣으면 해결 할 수 있다.
12 -> 7 -> 9 -> 15 -> 5 순서로 들어와도
-5 -> -7 -> -9 -> -12 -> -15 순으로 입력될 것이기 때문에 사이즈가 넘어가면 pop()을 하면 전체 사이즈를 n 만큼 유지할 수 있다.
Top()에는 n개중 제일 작은 녀석이 앞에 있을테니 그대로 -1 * top을 출력해주면 된다.
Code
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin>>n;
priority_queue<int> pq;
for(int i=0; i<n*n; i++) {
int num;
cin>>num;
pq.push(-num);
if(pq.size()>n) {
pq.pop();
}
}
cout<<-pq.top()<<"\n";
}
Fealing
불필요한 데이터를 제거하는 법을 잘 생각해내면 좋으련만..
많이 부족하다...
728x90
'Algorithm > 2021' 카테고리의 다른 글
2800_괄호 제거 (0) | 2021.06.17 |
---|---|
11286_절댓값 힙 (0) | 2021.06.16 |
1068_트리 (0) | 2021.06.15 |
9934_완전 이진 트리 (0) | 2021.06.15 |
1158_요세푸스 문제 (0) | 2021.06.08 |
Comments