백준 1316_그룹 단어 체커 [C++]
본문 바로가기
Algorithm/Python, C++

백준 1316_그룹 단어 체커 [C++]

by liveloper jay 2022. 7. 12.

문제

 

 

풀이

 이 문제는 각 단어가 떨어져서 중복되지 않는 (즉 그룹을 지을 수 있는) 단어가 몇 개인지를 출력하는 문제입니다. 여기서 고려해야 할 사항은 두 가지가 존재합니다.

 1. 한 단어 내에 중복되는 문자가 존재하는가? -> 존재하지 않을 경우 그룹 단어

 2. 중복되는 문자가 있는 경우 해당 문자가 연속해서 나타나는가? -> 연속되지 않을경우 그룹단어가 아님.

 

이렇게 두가지 사항을 고려하면 됩니다. 따라서 이중 for문을 이용하여 입력받은 값의 각 배열 값을 비교하여, 배열의 n번째 값과 m번째 값이 같을 때 n이 m-1 또는 m+1이 아닐 경우 0을 반환, for문이 완료될때까지 이상이 없을 경우 1을 반환하여 cnt 값에 더해주어 cnt를 출력해주면 됩니다. 소스코드는 아래와 같습니다.

 

 

소스코드

#include<iostream>
#include<cstring>
using namespace std;


int groupWord(char a[]){
    for (int i = 0; i < strlen(a); i++)
    {
        for (int j = 0; j < strlen(a); j++)
        {
            if (a[i]==a[j]){
                if(j-i>1){
                    if(a[j-1]!=a[j]) return 0;
                }
            }
        }
    }
    return 1;
}

int main(){
 int n, cnt=0;
 char alpha[101];
 cin >>n;
 for (int i = 0; i < n; i++)
 {
    cin >>alpha;
    cnt+=groupWord(alpha);  
 }
 cout << cnt;
 return 0;
}

 

'Algorithm > Python, C++' 카테고리의 다른 글

백준 10989_수 정렬하기3 [C++]  (0) 2022.07.14
백준 2750_수 정렬하기 [C++]  (0) 2022.07.13
백준 2941_크로아티아 알파벳 [C++]  (0) 2022.07.11
백준 5622_다이얼 [C++]  (0) 2022.07.10
백준 2908_상수 [C++]  (0) 2022.07.09

댓글