풀이
뭔가 번역이 좀 애매한 것 같은데
a->b면 b->a도 당연히 성립할 줄 알았더니
a->b만 성립하면 되는 문제였다 (…)
단순 구현 문제이다.
코드
#include <iostream>
#include <string>
using namespace std;
int n, i, j, k, ans;
string str[101];
int main() {
scanf("%d", &n);
for (i = 0; i < n; i++) cin >> str[i];
for (i = 0; i < n - 1; i++) for (j = i + 1; j < n; j++) {
int chk1[27] = { 0 }, chk2[27] = { 0 };
for (k = 0; k < str[i].length(); k++) {
int a = str[i][k] - 'a' + 1, b = str[j][k] - 'a' + 1;
if (!chk1[a] && !chk2[b]) chk1[a] = b, chk2[b] = a;
else if (chk1[a] != b) break;
}
if (k >= str[i].length()) ans++;
}
cout << ans;
return 0;
}
아무말
백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge