문제 링크입니다: https://www.acmicpc.net/problem/1411
예상외로 쉬운 문제였습니다.
초기에는 비슷한 단어끼리의 그룹 중 최대 사이즈를 출력하는 줄 알았는데 그냥 비슷한 단어의 쌍을 구하면 되는 문제였습니다.
#include <iostream>
#include <string>
using namespace std;
const int MAX = 100;
string s[MAX];
bool similar(int idx1, int idx2)
{
if (s[idx1].length() != s[idx2].length())
return false;
char visited1[26] = { 0 }, visited2[26] = { 0 };
//알파벳이 동일하게 변환되는지 확인
for (int i = 0; i < s[idx1].length(); i++)
if (!visited1[s[idx2][i] - 'a'] && !visited2[s[idx1][i] - 'a'])
{
visited1[s[idx2][i] - 'a'] = s[idx1][i];
visited2[s[idx1][i] - 'a'] = s[idx2][i];
}
else if (visited1[s[idx2][i] - 'a'] != s[idx1][i] || visited2[s[idx1][i] - 'a'] != s[idx2][i])
return false;
return true;
}
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for (int i = 0; i < N; i++)
cin >> s[i];
int result = 0;
for (int i = 0; i < N; i++)
for (int j = i + 1; j < N; j++)
if (similar(i, j))
result++;
cout << result << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 10707번 수도요금 (0) | 2018.11.01 |
---|---|
백준 2138번 전구와 스위치 (0) | 2018.11.01 |
백준 10545번 뚜기뚜기메뚜기 (0) | 2018.10.30 |
백준 1972번 놀라운 문자열 (0) | 2018.10.30 |
백준 2897번 몬스터 트럭 (0) | 2018.10.30 |