알고리즘/BOJ

백준 1411번 비슷한 단어

꾸준함. 2018. 10. 30. 23:56

문제 링크입니다: 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