[백준] 1411번 비슷한 단어 (C++)

2025. 9. 5. 18:37·Algorithm
728x90

https://www.acmicpc.net/problem/1411

 

 

이 문제는 N개의 문자열의 개수가 주어지고 서로 다른 문자가 주어졌을때 비슷한 단어의 쌍을 출력하는 문제이다.

비슷한 단어란 단어를 변경할 수 있는데 만약 하나의 알파벳을 다른것으로 변경한 경우 문자열에서의 변경했던 단어가 모든 문자에 대해 변경된다.

 

이때 문자열을 변경했을때 둘이 같은 경우 비슷한 단어라고 한다.

 

 

문자의 길이가 최대 100이다 N의 크기가 최대 몇인지는 모르겠지만 완전탐색으로 가능하다고 생각을 하였다.

 

따라서 비교하는 문자 a, b에 대해서 알파벳 배열을 만들었으며 a와 b의 문자가 다를경우 각각의 문자를 서로 다르게 변경해주었으며

만약 이미 변경했고 b의 문자와 다를 경우 이는 비슷한 단어가 아니기 때문에 개수를 추가하지 않는다.

 

정답 코드

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
#define endl "\n"
#define MAX 1e9

struct coordinate {
    int x;
    int y;
    int r;
};

int dx[] = {0 ,0, -1, 0, 1, 1, -1, -1, 1};
int dy[] = {0, -1, 0, 1, 0, -1, 1, -1, 1};
int N, cnt;
string arr[101];

void solve() {
    for(int i = 0; i < N; i++) {
        for(int j = i+1; j < N; j++) {
            string a = arr[i];
            string b = arr[j];

            char visited1[26] = {0};
            char visited2[26] = {0};
            bool flag = false;

            for(int k = 0; k < a.size(); k++) {
                int idx1 = a[k] - 'a';
                int idx2 = b[k] - 'a';

                if(visited1[idx1] == 0 && visited2[idx2] == 0) {
                    visited1[idx1] = b[k];
                    visited2[idx2] = a[k];
                }
                else if(visited1[idx1] != b[k] || visited2[idx2] != a[k]) {
                    flag = true;
                    break;
                }
            }

            if(!flag) cnt++;
        }
    }

    cout << cnt;
}

void input() {
    cin >> N;

    for(int i = 0; i < N; i++) {
        cin >> arr[i];
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);

    input();
    solve();
}

 

 

728x90
저작자표시 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준] 16472번 고냥이 (C++)  (0) 2025.09.07
[백준] 19622번 회의실 배정 3 (C++)  (0) 2025.09.06
[백준] 3078번 좋은 친구 (C++)  (0) 2025.09.04
[백준] 10653번 마라톤 2 (C++)  (0) 2025.09.03
[백준] 14888번 연산자 끼워넣기 (C++)  (0) 2025.09.02
'Algorithm' 카테고리의 다른 글
  • [백준] 16472번 고냥이 (C++)
  • [백준] 19622번 회의실 배정 3 (C++)
  • [백준] 3078번 좋은 친구 (C++)
  • [백준] 10653번 마라톤 2 (C++)
쿨쿨.
쿨쿨.
  • 쿨쿨.
    All of the life
    쿨쿨.
  • 전체
    오늘
    어제
    • 분류 전체보기 (284) N
      • Programming (51) N
        • C, C++ (18)
        • Python (6)
        • Java (1)
        • HTML,CSS,JS (3)
        • SQL(DB) (13)
        • SpringBoot (7) N
        • Android (2)
        • CI,CD (1)
      • Algorithm (173)
        • Review (4)
      • Security (14)
        • WebHacking (3)
        • Websecurity (11)
      • OS (19)
        • Linux (12)
        • Mac os (2)
      • 머신러닝 (1)
      • CS(Computer Science) (12)
        • 컴퓨터 네트워크 (3)
        • 컴퓨터 구조 (1)
        • 인공지능 (8)
      • Docker (2) N
      • Dev Book Review (3)
        • Clean Code (1)
        • Effective Java (0)
        • Real MySQL (2)
      • SWM (1)
      • Review (6)
      • AWS (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    c언어
    에라토스테네스의 체
    DFS
    이분탐색
    누적합
    비트마스킹
    우선순위큐
    다익스트라
    백준
    투포인터
    백트래킹
    코딩
    다이나믹 프로그래밍
    Bandit
    linux
    트리
    WebSecurity
    재귀
    그리디
    시뮬레이션
    Leviathan
    정렬
    BFS
    깊이우선탐색
    DP
    브루트포스
    그래프 이론
    구현
    wargame
    우선순위 큐
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.6
쿨쿨.
[백준] 1411번 비슷한 단어 (C++)
상단으로

티스토리툴바