๋ฌธ์
https://www.acmicpc.net/problem/2002
ํ์ด
๐ ์ ๊ทผ
- ์ฐจ๊ฐ ๋ค์ด๊ฐ ์์๋ฅผ ์ซ์๋ก ๋ํ๋ด๊ธฐ
- A์ฐจ๊ฐ ๋ค๋ฅธ ์ฐจ๋ฅผ ์ถ์ํ๋ค๋ ๊ฒ์ ์๋ ๋ฐฉ๋ฒ
(1) A์ ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๋ณด๋ค ๋์ฌ ๋ ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ์ถ์?
→ ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๊ฐ A๋ณด๋ค ํฐ ์ฐจ๋ค์ด ์ถ์ํ๋ฉด์, A์ ๋์ฌ ๋ ์ธ๋ฑ์ค๋ ๋ค๋ก ๋ฐ๋ฆด ์ ์์ผ๋ฏ๋ก
A์ ์ธ๋ฑ์ค ๋น๊ต๋ง์ผ๋ก๋ ํ๋จํ ์ ์๋ค.
(2) A๋ณด๋ค ๋ฆ๊ฒ ๋์จ ์ฐจ ์ค์์, A๋ณด๋ค ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๊ฐ ์์ ์ฐจ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด
A๋ณด๋ค ๋จผ์ ๋ค์ด์๋๋ฐ A๋ณด๋ค ๋ค์ ๋์จ ๊ฒ์ด๋ฏ๋ก A๋ ํฐ๋ ์์์ ์ถ์์ ํ๋ค๊ณ ํ๋จํ๋ค.
๐จ ๊ตฌํ
- map์ ์ด์ฉํด ์ฐจ๋ ๋ฒํธ(key)์ ๋ค์ด๊ฐ ์์(value)๋ฅผ ์ ์ฅํ๋ค.
- vector์ ๋์จ ์ฐจ์ ์ฐจ๋ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ค.
- ๋์จ ์ฐจ๋ฅผ ์์๋๋ก ํ์ํ๋ฉด์ map์ ์ด์ฉํด ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ๋ค.
: ๋ค์ ๋์จ ์ฐจ๋ค๊ณผ ๋น๊ตํ๋ฉด์, ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๊ฐ ์์ ์ฐจ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ ๋ต(์ถ์ํ ์ฐจ) ์ฆ๊ฐ.
๋ค์ ์ฐจ ํ์ ์งํ.
์ฝ๋
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int passCar(int n, map<string, int> &enter, vector<string> &exit) {
int ans = 0;
for (int i = 0; i < n; i++) { // ๋์จ ์ฐจ ํ์
for (int j = i + 1; j < n; j++) { // ๋ค์ ๋์จ ์ฐจ๋ค๊ณผ ๋น๊ต
// ๋ค์ด๊ฐ ๋ ์ธ๋ฑ์ค๊ฐ ์์ ์ฐจ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด
if (enter[exit[i]] > enter[exit[j]]) {
ans++;
break;
}
}
}
return ans;
}
int main() {
int n, ans = 0; // n: ์ฐจ์ ๋์
string input;
map<string, int> enter; // ๋๊ทผ(์
๊ตฌ)
vector<string> exit; // ์์(์ถ๊ตฌ)
// ์
๋ ฅ
cin >> n;
for (int i = 0; i < n; i++) { // ๋ค์ด๊ฐ ์ฐจ
cin >> input;
enter[input] = i;
}
for (int i = 0; i < n; i++) { // ๋๊ฐ ์ฐจ
cin >> input;
exit.push_back(input);
}
// ์ถ๋ ฅ
cout << passCar(n, enter, exit);
return 0;
}
'๐ญ Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 15649๋ฒ: N๊ณผ M (1) (0) | 2024.10.28 |
---|---|
[SWEA][C++] 1289. ์์ฌ์ ๋ฉ๋ชจ๋ฆฌ ๋ณต๊ตฌํ๊ธฐ (0) | 2024.10.16 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ๋คํธ์ํฌ (0) | 2024.06.04 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2024.06.02 |
[ํ๋ก๊ทธ๋๋จธ์ค][C++] ํ๊ฒ ๋๋ฒ (0) | 2024.05.31 |