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
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(void) {
    int N,k,i;
    int count=0;
    cin >> N;
    vector<string> stc(N);
    for (int i = 0; i < N; i++) {
        cin >> stc[i];
    }
    for (i = 0; i < N-1; i++) {    
            for (k = i + 1; k < N;k++) {
                int swp1[27= { 0 }, swp2[27= { 0 };            //알파벳 26+널문자공간.
                bool check = true;                                            
                for (int p = 0; p < stc[i].length(); p++) {
                    int a = stc[i][p] - 'a'+1;
                    int b = stc[k][p] - 'a'+1;
                    if (!swp1[a] && !swp2[b]) {                    //둘중에 하나라도 이전에 같은 알파벳이 입력된적 없니?
                        swp1[a] = b;                            
                        swp2[b] = a;
                    }
                    else if (swp1[a] != b) check = false;        //문자겹치는게 나왔는데 같지않으면 같은단어아님!                    
                }
                if (check) count++;
            }
        }



    cout << count;
    return 0;
}
 
cs


문제 피드백,질문 댓글로 부탁드려요~!

문제 출처:https://www.acmicpc.net/problem/1411

'알고리즘 > BAEKJOON' 카테고리의 다른 글

백준 10451번 순열 사이클  (0) 2018.11.08
백준 1718번 암호  (0) 2018.11.06
백준 1972번 놀라운 문자열  (0) 2018.11.06
백준 4334번 평균은 넘겠지  (0) 2018.11.01
백준 10545번 뚜기뚜기메뚜기  (0) 2018.11.01

+ Recent posts