https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
풀이
#include <stdio.h>
int main() {
int n;
char s[101];
int cnt = 0;
int j, flag;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s", s); // 문자열 입력
j = 0; // 초기화
flag = 0; // 초기화
char tmp[101] = {}; // 초기화를 위해 반복문 중간에 정의
while (s[j] != '\0') { // 문자열 끝까지 반복
if (s[j] != s[j-1]) // j와 j-1번째를 비교해서 문자가 중복인지 확인
tmp[j] = s[j]; // 중복아닐때 tmp에 저장
j++;
}
// tmp의 배열 원소끼리 비교해서 같은게 있다면 flag를 1로 변경
for (int z = 0; z<j; z++) {
for (int c = 0; c < z; c++) {
// tmp의 남은 원소에는 \0로 초기화 되어있기에 알파벳일때만 가능
if (tmp[z]>='a' &&tmp[z]<='z'){
if (tmp[z] == tmp[c]) {
flag = 1;
break;
}
}
}
}
//flag가 0(tmp배열 원소 중 서로 같은게 없을때) cnt+1
if (flag == 0) cnt++;
}
printf("%d\n", cnt);
return 0;
}
문제에서 그룹단어만 출력하길 원한다.
즉, 모두 다른 알파벳일때만(연속된 알파벳은 가능) 성립한다.
풀이과정
1. 중복이 아닌 알파벳만 따로 tmp배열에 저장.
2. tmp배열을 각각의 원소끼리 겹치지 않을때만 cnt 값을 증가 시키는 식으로 반복과 조건문 설정
3. cnt를 출력
'코딩 > 백준 문제 (실버)' 카테고리의 다른 글
[백준/2941/C언어] 크로아티아 알파벳 _ 풀이 (0) | 2023.08.23 |
---|---|
[백준/2563/C언어] 색종이 _ 풀이 (0) | 2023.08.22 |
[백준/1193/C언어] 분수찾기 _ 풀이 (0) | 2023.08.19 |
[백준/11728/C언어] 배열 합치기 _ 풀이 (0) | 2023.08.14 |
[백준/1026/C언어] 보물 _ 풀이 (0) | 2023.08.08 |