문제풀이/구름

[구름LEVEL] JMOS

Hyeon-Uk 2021. 3. 19. 21:39
반응형

level.goorm.io/exam/49109/jmos/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io


 

-풀이-

꼬여있는관계를 없애기 위해 자원을 반납해야하는 최소한의 프로그램 개수를 구하는 문제이다.

이문제는 꼬여있는 최소한을 없애는것== 전체에서 가장 긴 증가하는 수열의 개수를 빼주는것과 같다.

따라서 가장 긴 증가하는 수열의 개수를 구해준 뒤, 전체 개수에서 빼주면 된다.

 

-시간 복잡도-

전체적으로 N번을 돌며, lower_bound를 실행하기 때문에 O(NlogN)이 된다.

 

-코드-

 

#include <iostream>
#include<algorithm>
#include<vector>
using namespace std;

vector<int> v;
int n;

int main() {
	cin>>n;
	
	for(int i=0;i<n;i++){
		int data;
		cin>>data;
		
		if(v.empty()||v.back()<data){
			v.push_back(data);
		}
		else{
			int ind=lower_bound(v.begin(),v.end(),data)-v.begin();
			v[ind]=data;
		}
	}
	cout<<n-v.size()<<"\n";
	
	return 0;
}

 

반응형