https://www.acmicpc.net/problem/2002
자료구조 문제.
차량 번호로 주어지는 문자열을 숫자에 매칭시켜줘야 한다.
처음 N줄에 들어오는 문자열들을 1부터 차례대로 숫자에 매칭시켜주고,
다음 N줄에 들어오는 문자열들을 앞서 매칭시켰던것을 이용해서 하나의 숫자 배열로 바꿔준다.
숫자 배열을 비교하면서 탐색하는데,
자기 자신의 뒤에서 자기 자신보다 적은 번호를 매칭받은 번호판이 있다면
자기 자신이 반드시 그 번호판의 차량을 추월했다는 뜻이므로
정답으로 카운팅해주면 된다.
매칭에는 std::map을 사용했다.
#include <bits/stdc++.h>
using namespace std;
int arr[1234] = {0};
map<string,int> m;
int main(){
cin.sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
int ans = 0;
string s;
cin >> N;
for(int i=1; i<=N; i++){
cin >> s;
m[s] = i;
}
for(int i=0; i<N; i++){
cin >> s;
arr[i] = m[s];
}
for(int i=0; i<N; i++){
for(int j=i+1; j<N; j++){
if(arr[j] < arr[i]){
ans++;
break;
}
}
}
cout << ans;
return 0;
}
반응형