728x90
반응형

블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.


문제 설명

  • 그룹 단어: 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우
  • ex) ccazzzzbb -> 그룹 단어, kin -> 그룹 단어, aabbbccb -> 그룹 단어 아님
  • 단어 N개를 입력받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
    (단, N <= 100, 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100)

풀이 전략

  • 알파벳 개수만큼 bool형식의 배열을 선언
  • 입력받은 문자열을 순회하며 새로운 알파벳을 처음 입력받았을 때, 배열에서 입력받은 알파벳 인덱스의 bool값 변경
  • 동일한 알파벳이 나오지 않을 때까지 문자열 인덱스를 증가시키며 순회
  • 문자열 순회 중 이미 전에 나온 알파벳이 있다면 그룹 단어가 아니다.

소스 코드

#include <iostream>
#include <string>

using namespace std;

bool IsCheak( string str )
{
	bool checkStr[26] = { false };
	for (int i = 0; i < str.length(); ++i)
	{
		if (checkStr[str[i] - 'a'])
			return false;
		else
		{
			char temp = str[i];
			checkStr[str[i] - 'a'] = true;

			while (true)
			{
				if (temp != str[++i])
				{
					--i;
					break;
				}
			}
		}
	}
	return true;
}

int main()
{
	int result = 0;
	int count;
	cin >> count;

	for (int i = 0; i < count; ++i)
	{
		string str;
		cin >> str;

		if (IsCheak(str))
			++result;
	}

	cout << result;
}

링크

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

728x90
반응형

'문제풀이 > BOJ' 카테고리의 다른 글

[C++ 백준] 1193 분수 찾기  (0) 2021.05.22
[C++ 백준] 1152 단어의 개수  (0) 2021.05.18
[C++ 백준] 2908 상수  (0) 2021.05.15
[C++ 백준] 5622 다이얼  (0) 2021.05.14
[C++ 백준] 2675 문자열 반복  (0) 2021.05.12