한줄 후기 :정답률 56퍼라며?
https://www.acmicpc.net/problem/16466
엄청~ 쉬워보인다.
그냥 벡터에 받아서 정렬하고 인덱스로 찾으려 했더니 자꾸 틀렸다.
그래서 min heap을 만들어 차근차근 비교했다.
다른 블로그 보니 중복된 숫자가 들어오면 걸러야하는 코드를 넣어야한다고 했다.
그래서 중복을 체크하는 bool 배열도 만들었다.
#include <iostream>
#include <queue>
using namespace std;
priority_queue<int,vector<int>, greater<int> > ticket;
void check_ticket(int n){
int index = 1;
while(!ticket.empty()){
int num = ticket.top();
if(num != index){
cout << index;
return;
}
ticket.pop();
index++;
}
cout << index;
}
int main(){
bool check[1000001]={false};
int n;
cin >> n;
for(int i=0; i<n; i++){
int temp;
scanf("%d", &temp);
if(check[temp] == false) {
ticket.push(temp);
check[temp] = true;
}
}
check_ticket(n);
return 0;
}
'DEV > PS' 카테고리의 다른 글
[1463] 1로 만들기, c++ (0) | 2019.09.17 |
---|---|
[7785] 회사에 있는 사람 (2) | 2019.09.08 |
[1920] 수 찾기 (0) | 2019.08.25 |
[2389] 세상의 중심에서... (0) | 2019.08.25 |
[2493] 탑, c++ (0) | 2019.08.23 |