본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 1316번: 그룹 단어 체커 -C++

728x90

[백준알고리즘] 1316번: 그룹 단어 체커 -C++

1316번: 그룹 단어 체커 (acmicpc.net)

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

C++ 연습을 시작해야겠다.. 토이 프로젝트 하는거 아니면 알고리즘 연습할겸 하는 것도 괜찮은 것 같다.

 

암튼 그룹 단어인 개수를 세어줘야 한다.

그룹 단어는 다음 두 가지 기준으로 정리했다.

 

  1. 주어진 단어에서 이전 알파벳과 현재 알파벳이 같은가
  2. 다르다면, 해당 단어에서 이전에 한 번 이상 나온 문자인가

 

2번 기준에서 True라면 해당 단어는 그룹 단어가 아니며, 이외의 경우에는 모두 그룹 단어이다.

 

#include <string>
#include <iostream>

int main(void)
{
	int n;
	std::cin >> n;
	
	int answer = 0;
	for (int i = 0; i < n; i++)
	{
		std::string word;
		std::cin >> word;

		int len = word.length();
		if (len == 1)
		{
			answer += 1;
			continue;
		}

		int alphabet[26] = { 0, };
		alphabet[word[0] - 'a'] += 1;
		for (int j = 1; j < len; j++)
		{
			if (word[j] == word[j - 1]) continue;
			if (alphabet[word[j] - 'a'] > 0)
			{
				answer--;
				break;
			}

			alphabet[word[j] - 'a'] += 1;
		}

		answer++;
	}

	std::cout << answer;
}

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90