728x90
https://www.acmicpc.net/problem/1316
코드
#include <stdio.h>
#include <string.h>
int check(char arr[]) { //그룹 단어인지 판단하는 함수
for (int i = 0; i < strlen(arr); i++) { //단어의 길이만큼 반복,
for (int j = 0; j < strlen(arr); j++) { //단어의 문자별로 판단
if (arr[i] == arr[j]) //해당 문자와 같은 문자가 있고,
if (j - i > 1) //해당 문자와 중복된 문자 사이의 거리가 1보다 크고,
if (arr[j - 1] != arr[j]) //중복된 문자가 연속되어 있지 않으면
return 0; //그룹 단어가 아니므로 0을 리턴
}
}
return 1; //그룹 단어라면 1을 리턴
}
main() {
int n, sum = 0; //n: 단어의 개수, sum: 그룹 단어의 개수
char arr[100]; //단어의 최대 길이가 100이므로 배열 크기를 100으로 저장
scanf("%d", &n); //단어의 개수 n을 입력받음
while (n--) { //다음을 n만큼 반복
scanf("%s", arr); //단어를 입력받아 arr배열에 저장
sum += check(arr); //check 함수의 리턴값(그룹단어면 1, 아니면 0)을 sum에 더함
}
printf("%d\n", sum); //sum 출력
}
설명
main 함수
1) 단어의 개수 n을 입력받음
2) n번 동안 다음을 반복
2-1) 단어를 입력받아 arr배열에 저장
2-2) check함수를 통해 그룹 단어인지 판단
2-3) 그룹 단어이면 1, 그룹 단어가 아니면 0을 sum에 더함
3) sum 출력
check 함수
1) 이중 for문을 사용하여 그룹 단어인지 판단
(단어 안에 중복된 문자가 있으면 서로 연속되어 있는지 판단하고, 연속되어 있지 않으면 그룹 단어가 아니라고 판단)
2) 그룹 단어면 1, 아니면 0 리턴
728x90
'C & C++ > BOJ' 카테고리의 다른 글
[백준] 1259번: 팰린드롬수 (0) | 2021.02.19 |
---|---|
[백준] 1152번: 단어의 개수 (0) | 2021.02.09 |
[백준] 2869번: 달팽이는 올라가고 싶다 (0) | 2021.02.09 |
[백준] 1094번: 막대기 (0) | 2021.02.08 |
[백준] 1008번: A/B (0) | 2021.02.08 |