Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
KENEW authored Dec 21, 2020
1 parent a1ea3b1 commit d91240c
Show file tree
Hide file tree
Showing 4 changed files with 187 additions and 0 deletions.
45 changes: 45 additions & 0 deletions 11279_최대_힙.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
//#include<iostream>
//#include<algorithm>
//#include<queue>
//#include<vector>
//using namespace std;
//
//int N;
//priority_queue<int, vector<int>, less<int>> pq;
//int arr[100001];
//
//int main(void)
//{
// //ios::sync_with_stdio(false);
// //cin.tie(0);
// //cout.tie(0);
// //
// //cin >> N;
// scanf("%d", &N);
//
// for (int i = 0; i < N; i++)
// {
// cin >> arr[i];
// }
//
// for (int i = 0; i < N; i++)
// {
// if (arr[i] == 0)
// {
// if (!pq.empty())
// {
// printf("%d\n", pq.top());
// pq.pop();
// }
// else
// {
// printf("0\n");
// }
// }
// else
// {
// pq.push(arr[i]);
// }
// }
// return 0;
//}
40 changes: 40 additions & 0 deletions 1927_최소_힙.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;

int N;
priority_queue<int, vector<int>, greater<int>> pq;
int arr[100001];

int main(void)
{
scanf("%d", &N);

for (int i = 0; i < N; i++)
{
cin >> arr[i];
}

for (int i = 0; i < N; i++)
{
if (arr[i] == 0)
{
if (!pq.empty())
{
printf("%d\n", pq.top());
pq.pop();
}
else
{
printf("0\n");
}
}
else
{
pq.push(arr[i]);
}
}
return 0;
}
32 changes: 32 additions & 0 deletions LIS_가장_긴_수열_DP.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//#include<iostream>
//#include<algorithm>
//using namespace std;
//
//int N;
//int length[40001];
//int arr[40001];
//
//int main(void)
//{
// cin >> N;
//
// for (int i = 0; i < N; i++)
// {
// cin >> arr[i];
// }
//
// for(int k = 0; k < N; k++)
// {
// length[k] = 1;
//
// for (int i = 0; i < k; i++)
// {
// if (arr[i] < arr[k])
// {
// length[k] = max(length[k], length[i] + 1);
// }
// }
// }
//
// return 0;
//}
70 changes: 70 additions & 0 deletions LIS_가장_긴_수열_이분탐색.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
//#include<iostream>
//#include<algorithm>
//using namespace std;
//
//int N;
//int arr[40001];
//int lis[40001];
//
////LIS를 유지하기 위해 숫자가 들어갈 위치를 이분탐색으로 찾는 함수
//int BinarySearch(int left, int right, int target)
//{
// int mid;
//
// //lis 배열에 들어갈 target == arr[i] 의 위치를 이분탐색으로 찾기
// while (left < right)
// {
// mid = (left + right) / 2;
//
// if (lis[mid] < target)
// {
// left = mid + 1;
// }
// else
// {
// right = mid;
// }
// }
//
// return right;
//}
//
//int main(void)
//{
// ios::sync_with_stdio(0);
// cin.tie(0);
//
// cin >> N;
// for (int i = 0; i < N; i++)
// {
// cin >> arr[i];
// }
//
// //Lis 배열의 맨 첫번째 값은 arr[0]으로 초기화
// lis[0] = arr[0];
//
// int j = 0;
// int i = 1;
//
// //arr의 두번째부터 마지막까지 하나씩 Lis와 비교하면서 넣어준다.
// while (i < N)
// {
// //Lis 배열의 맨 뒤의 값보다 arr[i]가 더 크면 그것을 lis배열 맨 뒤에 넣어준다.
// if (lis[j] < arr[i])
// {
// lis[j + 1] = arr[i];
// j += 1;
// }
// //arr[i]값이 더 작으면 arr[i]의 값이 Lis배열 중 어느 곳에 들어갈지 이분탐색한다.
// else
// {
// int index = BinarySearch(0, j, arr[i]);
// lis[index] = arr[i];
// }
// i += 1;
// }
//
// cout << j + 1;
//
// return 0;
//}

0 comments on commit d91240c

Please sign in to comment.