반응형
[ 문제 ]
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
[ 코드 ]
using System;
using System.Text;
using static System.Console;
namespace Baekjoon
{
internal class Program
{
static void Main()
{
int n = int.Parse(ReadLine());
int Count = 0;
for (int i = 0; i < n; i++)
{
string word = ReadLine();
if (GroupWord(word))
{
Count++;
}
}
Console.WriteLine(Count);
}
static bool GroupWord(string word)
{
bool[] wordsCheck = new bool[26];
for (int i = 0; i < word.Length; i++)
{
char currentChar = word[i];
if (!wordsCheck[currentChar - 'a'])
{
wordsCheck[currentChar - 'a'] = true;
}
else
{
if (word[i - 1] != currentChar)
{
return false;
}
}
}
return true;
}
}
}
- bool 형식인 배열에 i번째 인덱스가 아무것도 안들어있으면 true를 넣고, 만약 이미 true가 있으면 앞과 비교해서(문자가 연속되는건지 아니면 앞에 나왔던 문자가 또 나온건지 확인하기위해) 아닐 경우에만 false를 반환한다.
모두 입력이 완료되면 그룹 단어의 카운트를 출력하게 된다.
[ 실행화면 ]
문제링크: https://www.acmicpc.net/problem/1316
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 16170번 오늘의 날짜는? (UTC+0 시간대 써보기) (2) | 2024.01.24 |
---|---|
[C#] 백준 2745번 진법 변환 (0) | 2024.01.23 |
[C#] 백준 2941번 크로아티아 알파벳 (0) | 2024.01.21 |
[C#] 백준 2444번 별찍기 - 7 (다이아몬드 별찍기) (0) | 2024.01.20 |
[C#] 백준 11718번 그대로 출력하기 (for문 ,while문, null조건연산자 사용해보기) (0) | 2024.01.20 |