11000
어느 강의실에 배정되는 지는 중요하지 않다. 배정될 수 있는 지만 중요하다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int N;
int ans = 1;
vector<pair<int,int>> v;
priority_queue<int,vector<int>,greater<int>> pq;
bool compare(pair<int,int> a,pair<int,int> b)
{
return a.first<b.first;
}
int main() {
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>N;
for(int i = 0; i < N; i++)
{
int a = 0, b = 0;
cin>>a>>b;
v.push_back({a,b});
}
sort(v.begin(),v.end(),compare);
pq.push(v[0].second);
for(int i = 1;i < N; i++)
{
if(pq.top()>v[i].first) ans++;
else pq.pop();
pq.push(v[i].second);
}
cout<<ans;
return 0;
}
2149
푸는 방법이 다양한 것 같다. 구조체를 이용해서 구현하던데...어떻게 하는거지?ㅎㅎ
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
string key,code;
vector<string> encoded;
vector<string> decoded;
int main() {
bool used [11]={0};
cin>>key>>code;
string p = key;
sort(p.begin(),p.end());
int n = code.length() / key.length();
for(int i = 0; i < p.length(); i++){
string tmp="";
tmp+=p[i]; //식별자로 key[i] 문자를 사용
for(int j = i * n; j < i * n + n; j++) tmp+=code[j];
encoded.push_back(tmp);
}
for(int i = 0; i < key.length(); i++){
char c=key[i];
for(int j = 0 ; j < encoded.size(); j++){
if(!used[j] && encoded[j][0]==c) {
decoded.push_back(encoded[j]);
used[j]=true;
break;
}
}
}
for(int i = 1; i <= n; i++){
for(int j = 0 ; j < decoded.size(); j++){
cout<<decoded[j][i];
}
}
return 0;
}