Algorithm/Algorithms Practice
[BOJ/C++] 그룹 단어 체커(1316번)
Patrick_
2022. 10. 17. 17:28
1. 개요
https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
1-1. 설명
그룹 단어란 단어에 존재하는 모든 문자에 대해, 각문자가 연속해서 나타나는 경우만 말한다. 단어 N개를 입력받아 그룹 단어의 개수를 출력하는 프로그램을 작성한다.
1-2. 제한 사항
- 첫줄에 단어 개수 N이 주어지며, N은 100 이하 자연수
- 둘째 줄부터 N개의 줄에 단어가 주어며 길이는 최대 100
2. 구현
2-1. 풀이
이미 나온 문자인데 또 나오면 플래그를 통해서 count를 더하지 않는다. 문제를 읽고 한단계씩 구현하면 풀린다.
2-2. 코드
#include <iostream>
using namespace std;
int main() // 1316
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, count = 0;
string str;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> str;
char check = ' ';
bool apCount[26] = { false, }, flag = true;
for (char ch : str) {
if (check == ' ') { // 첫 글자 일때
check = ch;
apCount[ch - 'a'] = true;
continue;
}
if (apCount[ch - 'a'] && ch != check) { // 이미 나온 문자일 때
flag = false;
break;
}
else {
if (ch != check) {
check = ch;
apCount[ch - 'a'] = true;
}
}
}
if (flag) count += 1;
}
cout << count;
return 0;
}