문제
https://www.acmicpc.net/problem/1316
소스
#include <iostream>
#include <string>
using namespace std;
int main(void) {
int n;
cin >> n;
int count = n;
while (n > 0) {
string input;
cin >> input;
bool alphabet[26] = { false };
bool flag = true;
for (int i = 0; i < input.length(); i++) {
int idx = input[i] - 'a';
if (!alphabet[idx]) {
alphabet[idx] = true;
}
else if(alphabet[idx] && (input[i] != input[i - 1])){
count -= 1; break;
}
}
n--;
}
cout << count;
return 0;
}
코드 설명
1. 크기가 26(알파벳 개수)인 bool type 배열을 false로 초기화한다.
2. 알파벳의 인덱스를 아스키 코드를 이용해서 정한다. input[i] - 'a' : a의 인덱스는 0, z의 인덱스는 25
3. 알파벳이 처음 등장하면 bool 값을 true로 바꾼다.
4. 같은 알파벳이 연속된 경우가 아니면서 bool 값이 true이면 그 단어는 그룹 단어가 아니므로 전체 개수(n)에서 1을 감소시킨다.
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++][백준 1260][BFS, DFS] DFS와 BFS :: seoftware (0) | 2020.02.19 |
---|---|
[C++][백준 2941][문자열 처리] 크로아티아 알파벳 :: seoftware (0) | 2020.02.16 |
[C++][백준 5622][문자열 처리] 다이얼 :: seoftware (0) | 2020.02.16 |
[C++][백준 2908][문자열 처리] 상수 :: seoftware (0) | 2020.02.16 |
[C++][백준 1157][문자열 처리] 단어 공부 :: seoftware (0) | 2020.02.16 |
댓글