<답안>
#include <iostream>
using namespace std;
int main() {
int n;
int count[26] = {0};
string input;
int index;
bool result = true;
int countResult = 0;
cin>>n;
for(int j=0; j<n; j++)
{
cin>>input;
for(int i=0; i<input.size(); i++)
{
index = (int)input.at(i)-97;
if(count[index] == 0)
count[index]++;
else
{
if(index == (int)input.at(i-1)-97)
count[index]++; //그냥 개수 남기는 느낌으로, 의미없는 문장
else
{
result = false;
break;
}
}
}
if(result)
countResult++;
for(int i=0; i<26; i++)
count[i] = 0;
result = true;
}
cout<<countResult;
return 0;
}
<설명>
알파벳이 26개 이므로 각 문자의 개수를 저장할 배열 count[26]을 0으로 초기화 한다
n을 입력받아 인덱스 j를 통해 n번 반복한다
string 형태의 input으로 입력받아 저장한 뒤
인덱스 i=0 부터 size()-1까지 증가시키면서
index에 알파벳 -> 숫자로 변환한 값을 저장한다 (a -> 0 ~ z -> 25)
만약 count[index] 값이 0인 경우는 해당문자의 첫입력이므로 count를 증가시킨다
그외의 경우 두번째 이후의 입력이므로 비교가 필요하다
그전의 문자와 동일한 경우 (index == (int)input.at(i-1)-97 )
정상적인 상황이다 //그래서 그냥 count를 증가시켰다
그 외의 경우는 그룹단어가 아니기 때문에
문장이 그룹단어인지 여부를 저장한 result 값을 false로 바꾼 뒤 반복문을 벗어난다
각 문자 비교가 끝난 후 result 값이 정상인 true인 경우 그룹단어문장 개수인 countResult를 증가시킨다
다음번 문장 비교를 위해 배열 count를 0으로 초기화, 그룹단어여부 result를 true로 초기화 한다음 다음번 문장을 입력받는다
최종적으로 countResult를 출력한다
'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글
백준 2839번 (C++) (0) | 2020.08.23 |
---|---|
백준 1712번 (C++) (0) | 2020.08.23 |
백준 2941번 (C++) (0) | 2020.08.23 |
백준 5622번 (C++) (0) | 2020.08.22 |
백준 2908번 (C++) (0) | 2020.08.22 |