알고리즘/백준
[백준 2002] 추월 (C++)
라이언납시오
2020. 6. 10. 15:52
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/2002
2002번: 추월
문제 대한민국을 비롯한 대부분의 나라에서는 터널 내에서의 차선 변경을 법률로 금하고 있다. 조금만 관찰력이 있는 학생이라면 터널 내부에서는 차선이 파선이 아닌 실선으로 되어 있다는 것
www.acmicpc.net
1. 주의할 점
- 각 차량이(문자열) 몇 번째로 터널에 들어갔는지 저장하기 위해 Map(String, Int)을 사용한다
2. 구현
- 들어간 차량을 Map에 저장하고, 나온 차량의 번호를 Map에서 찾아서 Fin[] 배열에 순서대로 넣는다
- 들어간 차량의 순서와 나온 차량의 순서를 비교하여 현재 차량보다 터널에 늦게 들어갔는데 현재 차량보다 터널에서 더 일찍 나온 경우, Pass++한다
#include <iostream>
#include <string>
#include <map>
using namespace std;
bool check[1001] = { false, };
int fin[1001];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int num;
cin >> num;
map<string, int> m;
string str;
for (int i = 0; i < num; i++) {
cin >> str;
m[str] = i;
}
int pass = 0; //추월한 차량 수
for (int i = 0; i < num; i++) {
cin >> str;
int val = m[str];
fin[i] = val;
}
for (int i = 0; i < num - 1; i++) {
for (int j = i + 1; j < num; j++) {
if (fin[i] > fin[j]) {
pass++;
break;
}
}
}
cout << pass;
return 0;
}
728x90
반응형