Kiki Devlog

[1316번] 그룹 단어 체커 본문

Coding Test/백준

[1316번] 그룹 단어 체커

kimkiki 2022. 3. 2. 18:50
728x90

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

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

 

보통 알파벳을 가리키는 배열 하나를 더 선언해서 특정 알파벳이 나오면 그 배열에 체크해가면서 해결하는 코드들이 많았는데.. 나는 굳이 find함수를 써서 풀고 싶었음. 최대한 반복문 안에 반복문안에 반복문.....형태를 피해보려고 했는데 이걸 쓰는게 최선인 것 같았음. (포인터 자료형 때문에 에러나는 줄 알고 포인터에 오기생김)

find함수를 쓰면서 algorithm 클래스를 포함 안시켜줘서 에러잡느라 오래걸린 문제 ㅠㅠ

심지어 vs는 자동으로 클래스를 포함해주는지 백준에서만 에러가 떠서 너무 당황했음,,

구글링해도 안나왔던 에러는 아래에..

더보기

error: no matching function for call to ‘find(std::vector<char>::iterator, std::vector<char>::iterator, __gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type)’

 

내 코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> 

using namespace std;

int main() {
	int answer = 0;
	int num;
	string input;
	vector <char> group;
	cin >> num;

	for (int i = 0; i < num; i++) {
		cin >> input;

		for (int j = 0; j < input.length(); j++) {
			if (find(group.begin(), group.end(), input[j]) != group.end()) {
				if(input[j] != input[j - 1])
					break;
			}
			if (j == (input.length() - 1)) {
				answer++;
			}

			group.push_back(input[j]);
		}
		group.clear();
	}

	cout << answer << endl;

	return 0;
}

 

Comments