https://www.acmicpc.net/problem/1316
사고과정)
abca 가 있다고 하면, a의 경우 아까 나왔는데 마지막에 또 나와버려서 그룹단어가 아님
그걸 활용해, 알파벳 수를 담는 배열을 만들고, 한글자씩 옆에랑 서로 비교하면서 다르면 글자수를 더하고
그러다가 글자수가 2 이상이면 중복되었다는 소리이므로 그룹단어가 아님.
문자열을 입력받고 (str[i] != str[i+1]) 이런 식으로 비교를 할텐데, 그렇게 되면 마지막 글자 하나는 비교가 안됨.
그래서 그냥 임시 문자열을 하나 만들어서 abc면 abcc 이렇게 한 글자를 임시로 더 더해줘서 다 비교되게함.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
int N;
cin >> N;
int result = N;
for (int i = 0; i < N; i++)
{
int alphabet[26] = { 0, };
string input;
cin >> input;
string temp = input + input.back();
size_t length = temp.length();
for (int j = 0; j < length; j++)
{
if (temp[j] != temp[j + 1])
alphabet[temp[j] - 'a']++;
}
for (int i = 0; i < 26; i++)
{
if (alphabet[i] > 1)
{
result--;
break;
}
}
}
cout << result;
return 0;
}
'백준 문제풀이 > 실버5' 카테고리의 다른 글
백준 4673번 - 셀프 넘버 (0) | 2021.11.23 |
---|---|
백준 1789번 - 수들의 합 (0) | 2021.11.20 |
백준 1475번 - 방 번호 (0) | 2021.11.14 |
백준 1246번 - 온라인 판매 (0) | 2021.11.09 |
백준 1439번 - 뒤집기 (0) | 2021.11.06 |