
#include<iostream>
#include<vector>
#include<queue>
#include<unordered_map>
using namespace std;
int main(){
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
vector<long long> backnum(n);
queue<long long> q;
vector<int> dp(n);
vector<int> temp(n);
unordered_map<long long, int> um;
int r=0;
for(int i=0; i<n; i++){
cin>>backnum[i];
dp[i]=++r;
um[backnum[i]]=i;
}
r=0;
for(int i=0; i<n; i++){
cin>>backnum[i];
int j=um[backnum[i]];
temp[i]=dp[j]-++r;
}
int Max=-999999;
for(int i=0; i<n; i++){
if(Max<temp[i]){
Max=temp[i];
}
}
for(int i=0; i<n; i++){
if(Max==temp[i])
q.push(backnum[i]);
}
while(!q.empty()){
cout<<q.front()<<" ";
q.pop();
}
}
해시를 통해서 등번호 저장하고 등수 비교해서 출력하면된다.
맵이라는 자료구조를 처음 접하였기에 공부가 많이 되었다.
'알고리즘' 카테고리의 다른 글
| Boj 1747 c++ 소수&팰린드롬 (0) | 2025.05.25 |
|---|---|
| Boj 1920 c++ 수 찾기(해시연습) (0) | 2025.05.24 |
| Boj 1193 c++눈물의 노가다 (0) | 2025.05.23 |
| Boj 11659 c++ 구간 합 구하기 4 (0) | 2025.05.22 |
| Boj 2531 c++ 회전초밥 (0) | 2025.05.22 |