본문 바로가기
알고리즘/백준 문제 풀이

[BOJ/백준] 1316번 그룹 단어 체커 - [c/c++] 풀이

by 미니상미니 2023. 5. 26.
반응형

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

 

 


  • 문제


해설

그룹 단어는 같은 문자를 여러 번 사용하지 않은 단어를 말한다. 단 연속해서 사용하는 경우는 제외한다.

for문을 1부터 돌려 i인덱스와 i-1인덱스 문자가 같지 않은 경우 문자를 사용했는 지 체크한다.

만약 사용했을 경우 그룹 단어에서 제외된다.

아래 코드에서는 isUsed 배열로 사용된 문자인 지 체크하고 있다.

코드

c

#include <stdio.h>
#include <string.h>

int main() {

  int n;
  char s[101];
  scanf("%d", &n);

  int flag;
  int ans = 0;
  while(n--) {
    scanf("%s", s);

    int isUsed[26] = { 0, };
    isUsed[s[0] - 'a'] = 1;
    flag = 1;

    for(int i = 1; i < strlen(s); i++) {
      if(s[i] == s[i - 1]) continue;

      if(isUsed[s[i] - 'a']) flag = 0;

      isUsed[s[i] - 'a'] = 1;
    }

    if(flag) ans++;
  }

  printf("%d", ans);  

  return 0;
}

 

c++

#include <iostream>

using namespace std;

int main() {

  int n;
  string s;
  cin >> n;

  bool flag;
  int ans = 0;
  while(n--) {
    cin >> s;

    bool isUsed[26] = { false, };
    isUsed[s[0] - 'a'] = true;
    flag = true;

    for(int i = 1; i < s.length(); i++) {
      if(s[i] == s[i - 1]) continue;

      if(isUsed[s[i] - 'a']) flag = false;

      isUsed[s[i] - 'a'] = true;
    }

    if(flag) ans++;
  }

  cout << ans;

  return 0;
}

 

 

 

 

 

반응형

댓글