굉장히 재미있었던 문제였다. 추월이라니?! 모두 안전 운전합시다!
문제해결방법
1.hashMap을 통해 차량번호와 순서를 저장한다.
2. 터널 출구에서 나오는 순서를 확인하면서 만약 자기보다 뒤에 있었던 차가 자기보다 앞으로 가있다면 추월한 차량을 기준으로 앞에 있는 차량들의 순서를 +1 해준다.(자기보다 앞에 있는 차가 다른 차를 추월하는 것은 자신의 순서에 영향을 미치지 않는다.)
그림을 보면 B가 A를 추월하였다. C D E의 순서에는 영향을 미치지 않았고 A의 순서에만 영향을 미쳤다.
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
unordered_map<string, int> hashMap;
int N = 0;
cin >> N;
for (int i = 0; i < N; i++)
{
string temp = "";
cin >> temp;
hashMap[temp] = i;
}
int count = 0;
for (int i = 0; i < N; i++)//자기를 추월했다면?? 자기보다 앞에 있는 차가 다른 다른 추월하는 것은 자신의 순서에 영향을 미치지 않는다.
{
string temp = "";
cin >> temp;
if (hashMap[temp] > i)
{
for (const auto& pair : hashMap)
{
if (pair.second < hashMap[temp])
{
hashMap[pair.first]++;
}
}
count++;
}
}
cout << count;
}
'백준 > 해시' 카테고리의 다른 글
[백준] C++ 13414 수강신청 (0) | 2024.10.01 |
---|---|
[백준] C++ 1302번 베스트셀러 (0) | 2024.10.01 |
[백준] C++ 4358번 생태학 (0) | 2024.09.29 |
[백준] C++ 20920번 영단어 암기는 괴로워 (1) | 2024.09.28 |
[백준] C++ 11478번 서로 다른 부분 문자열의 개수 (1) | 2024.09.28 |