◆C#/C# : 백준 문제 풀이

[백준] C++ & C# 그룹 단어 체커 (1316번)

진2_ 2024. 9. 21. 23:00
728x90
반응형

[백준] C++ & C# 그룹 단어 체커 (1316번) 실버 5

 

📝 문제

 

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들어, ccazzzzbb는 그룹 단어이지만, aabbbccb는 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

 

🔎 입력

 

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 100)
둘째 줄부터 N개의 줄에 단어가 주어진다. 각 단어는 알파벳 소문자로만 되어 있으며, 길이는 최대 100이다.

 

🔎 출력

 

첫째 줄에 그룹 단어의 개수를 출력한다.

 

🎀 입출력 예시

 

정답 

 

C++

 

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() 
{
    int n;
    cin >> n;
    
    int count = 0;
    for(int i = 0; i < n; i++) 
    {
        string s;
        cin >> s;
        
        vector<bool> check(26, false); // 알파벳의 등장 여부를 저장
        bool isGroupWord = true;

        for(int j = 0; j < s.length(); j++) 
        {
            // 이전 문자와 다른데 이미 나왔던 문자라면 그룹 단어가 아님
            if (check[s[j] - 'a'] && s[j] != s[j - 1]) 
            {
                isGroupWord = false;
                break;
            }
            // 해당 문자를 체크 표시
            check[s[j] - 'a'] = true;
        }
        
        if (isGroupWord) 
            count++;
    }
    
    cout << count << endl; // 그룹 단어의 개수 출력
    return 0;
}

C#

 

using System;
using System.Collections.Generic;

class Program
{
    static bool IsGroupWord(string word)
    {
        bool[] alphabet = new bool[26];
        char prevChar = '\0';

        foreach (char ch in word)
        {
            if (ch != prevChar)
            {
                if (alphabet[ch - 'a'])
                {
                    return false;
                }
                alphabet[ch - 'a'] = true;
                prevChar = ch;
            }
        }

        return true;
    }

    static void Main(string[] args)
    {
        int n = int.Parse(Console.ReadLine());
        int count = 0;

        for (int i = 0; i < n; i++)
        {
            string word = Console.ReadLine();
            if (IsGroupWord(word))
            {
                count++;
            }
        }

        Console.WriteLine(count);
    }
}

 

728x90
반응형