https://www.acmicpc.net/problem/1316
문제
- 첫째 줄에 단어의 개수 N (1 <= N <= 100) 입력.
- 각 문자가 모두 연속해서 나타나는 단어인 그룹단어를 구별.
- 첫째 줄에 그룹 단어의 개서 출력.
최종 코드
#include <stdio.h>
#include <string.h>
int main(void) {
int N, count = 0, flag;
char word[100];
scanf_s("%d", &N);
count = N;
for (int i = 0; i < N; i++) {
scanf("%s", &word);
flag = 0;
for (int j = 0; j < strlen(word); j++) { // 연속되는 부분을 0으로 초기화해 겹치지 않도록 만들음.
if (word[j] == word[j + 1]) {
word[j] = '0';
}
}
for (int j = 0; j < strlen(word); j++) {
for (int k = 0; k < j - 1; k++) {
if (word[j] == '0') { // 연속되는 부분이었던 0일 때 넘김.
break;
}
else if (word[k] == '0') {
k++;
}
if (word[j] == word[k]) { // 똑같은 문자가 나왔을 때 == 그룹 단어가 아니므로 for문 끝냄.
flag = 1;
break;
}
}
if (flag == 1) {
break;
}
}
if (flag == 1) {
count--;
}
}
printf("%d", count);
return 0;
}
0으로 초기화하는 부분 이후의 for문에서 연속해서 break를 걸 방법을 모르겠어서 새로운 변수를 추가해 for문처럼 돌릴지 flag를 추가해 따로 계산할지 고민이 됐는데 그냥 for문으로 돌리기로 했다.
시간 초과 안 걸려서 다행이다.
'백준 문제 풀이 > 백준 (C)' 카테고리의 다른 글
C 백준 1026 보물 (수학) (0) | 2024.06.30 |
---|---|
C 백준 11718 그대로 출력하기 (문자열) (0) | 2024.06.30 |
C 백준 11399 ATM (그리디) (0) | 2024.06.30 |
C 백준 28279 덱 2 (덱) - 미완 (0) | 2024.06.30 |
C 백준 1991 트리 순회 (트리) (0) | 2024.06.30 |