한다 공부
[C++] 백준 알고리즘 3077 임진왜란 본문
정답은 map으로 저장하고 학생의 답은 vector로 저장했다.
정답을
o[a]=0
o[b]=1
o[c]=2
으로 저장하고
학생의 답을 x[0]=a, x[1]=c, x[2]=b 로 저장을 했으니
정답의 맵의 key에 vector의 요소를 넣어주고 value의 크기를 비교해주면 된다.
#include<iostream>
#include<map>
#include<vector>
using namespace std;
int main() {
map<string, int> o;
vector<string> x;
int n, temp;
cin >> n;
temp = n;
//정답 map으로 저장
string s;
while (temp--) {
cin >> s;
o[s] = n - temp;
}
//학생의 답 vector로 저장
temp = n;
while (temp--) {
cin >> s;
x.push_back(s);
}
//정답 구하기
int answer = 0;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
//o[alpa]=0, o[beta]=1
//위와 같이 저장되어있으므로 비교해서 카운트
if (o[x[i]] < o[x[j]]) answer++;
}
}
cout << answer << '/' << n*(n-1)/2 << '\n';
}
'Algorithm > 문제풀이' 카테고리의 다른 글
[C++] 백준 알고리즘 1448 삼각형 만들기 (2) | 2021.10.07 |
---|---|
[C++] 백준 알고리즘 2108 통계학 (0) | 2021.09.27 |
[C++] 백준 알고리즘 2858 기숙사 바닥 (0) | 2021.09.27 |
[C++] 백준 알고리즘 10448 유레카 이론 (브루트 포스) (0) | 2021.09.27 |
[C++] 백준 알고리즘 6588 골드바흐의 추측 (에라토스테네스의 체) (0) | 2021.09.21 |