[1]. 그룹 단어 체커(1316)- C++ 

똑같은 스팰링이 연속해서 나타나면 그룹으로 만들고, 같은 스팰링이 떨어져 있다면, 그룹 단어가 아니기에 그룹 단어의 개수에 포함하지 않는다. 

[1.1]  구현

  • aabbbccb 는 bbb, b의 같은 b의 그룹 단어가 2개 있으니 개수에 포함하지 않게 구현하면 된다.
  • map을 이용했다. 알파벳이 소문자로 되어 있으니 크기가 26인 배열을 만들어서 arr[word[i] - 'a'] 형태로 구현하여도 된다.
  • 반복문(for) 안에서 첫 i 가 0 일 경우에는 i-1을 하지 못하지 처음 m[word[0]] = true로 초기값을 설정하여 i가 1을 시작하게 만들게 했다.
#include <bits/stdc++.h>
using namespace std;

int t, cnt = 0;
string word;

int main() {
  // fast i/o
  cin.tie(0);
  cout.tie(0);
  ios_base::sync_with_stdio(false);

  // input

  cin >> t;
  while(t--) {
    cin >> word;
    map<char, bool> m;
    m[word[0]] = true;

    bool flag = true;
    for (int i = 1; i < word.length(); i++) {
      if (m[word[i]] && word[i-1] != word[i]) {
        flag = false;
        break;
      }
      m[word[i]] = true;
    }

    if (flag) cnt++;
  }

  cout << cnt;
}

 

[1.2] 결과

• Accepted
  - Memory: 2028 kb
  - Time  : 0 ms

 

-- 문제 링크

https://www.acmicpc.net/problem/1316