1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <stdio.h> #include <map> #include <string> #include <iostream> using namespace std; map<string, int> mp; int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) { string tmp; cin >> tmp; mp[tmp] = i + 1; } int idx[2505] = { 0 }; for (int i = 1; i <= n; i++) { string str; cin >> str; idx[i] = mp.find(str)->second; } int sum = 0; for (int i = 1; i <= n; i++) { int st = idx[i]; for (int j = i + 1; j <= n; j++) { if (st < idx[j]) { sum++; } } } printf("%d/%d", sum, n * (n - 1) / 2); } | cs |
문제를 너무 어렵게 접근했다.
정수 인덱싱을 한 다음에 비교하면 된다는걸 기억하자.
모든 문제들을 다 map 으로만 풀려고 하면 안 된다.
적절히 섞어서 사용할 줄 알아야 한다.
'알고리즘 > 문자와 문자열' 카테고리의 다른 글
4659 비밀번호 발음하기 (0) | 2020.01.07 |
---|---|
10545 뚜기뚜기메뚜기 (0) | 2020.01.06 |
4949 균형잡힌 세상 (0) | 2020.01.06 |
9933 민균이의 비밀번호 (0) | 2020.01.06 |
3986 좋은 단어 (0) | 2020.01.06 |