백준/단계별

백준 1316 C#) 그룹 단어 체커

alpacadabra 2022. 4. 27. 01:27

문제는 간단하다. 같은 알파벳은 반드시 붙어있어야 한다는 것이다.

 

int n = int.Parse(Console.ReadLine());
int cnt = 0;
string s;

while (n-- > 0)
{
    s = Console.ReadLine();
    cnt++;
    
    for (int i = 0; i < s.Length - 1; i++)
    {
        if (s.IndexOf(s[i], i + 1) - i > 1)
        {
            cnt--;
            break;
        }
    }
}

Console.Write(cnt);

 

내 아이디어는 이러하다.

문자열 "aaabbaa"에서 a를 검사한다고 치자. 그럼 현재 a와 제일 가까운 다음 a의 인덱스 차이를 구할 수 있을 것이다.

이때 그 차이가 1이라면 a는 서로 붙어 있다는 뜻이 되지만 1보다 크다면 그렇지 않다는 뜻이므로 그룹 단어의 조건에 위배된다. 이를 검사하면 된다.

1보다 작은건 괜찮다. 이는 다음 a를 찾지 못했다는 뜻이므로 조건에 위배되지 않는다.

 

IndexOf 메소드를 사용하여 이를 간단히 구현할 수 있었다.