반응형
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int repeat = 0;
int repeatingword=0;
char word[105];
bool issame;
cin >> repeat;
repeatingword = repeat;
while (repeat > 0)
{
cin >> word;
for (int i = 0; i < strlen(word); i++)
{
issame = false;
for (int j = i+2; j < strlen(word); j++)
{
if (word[i] == word[j] && word[i] != word[j - 1]) {
issame = true;
}
}
if (issame == true)
break;
}
if (issame) {
repeatingword--;
}
repeat--;
}
cout << repeatingword << endl;
}
C++ 을 사용해서 2020에 데이터를 차지합니다.
풀이법은
2중 for 문을 돌면서 지금 찾고 있는 글자 i 보다 두 칸 더 앞으로 가서 j 부터 2중 포문을 실행합니다.
만약 i 번 째 글자와 j 번 째 글자가 같다면 조건을 걸어서 만약, j-1 번 째와 i 번째 가 다르다면 그룹단어가 아니므로 전체에서 제외하게 만들었습니다.
다른사람에 풀이법을 보겠습니다.
#include <stdio.h>
int main(){
int n, ans = 0;
scanf("%d", &n);
while(n--){
char s[101];
int visit[26] = {0}, i, ck = 0;
scanf("%s", s);
for(i = 0; s[i]; i++){
if(!visit[s[i] - 'a'] || s[i] == s[i - 1]){
visit[s[i] - 'a'] = 1;
ck++;
}
}
if(ck == i)
ans++;
}
printf("%d", ans);
c 언어 스타일 대로 작성 하셨고, 빈도수를 체크해서 지금 문자가 있어야 하는 위치 ( 연속해서 나왔다면 맞는위치) 보다 더 높은 i 이상에 위치에 있다면 ans 를 더하지 않고 그렇지 않고 맞는 위치에 있이 반복이 끝났다면 ans++를 해서 반복문자를 찾는 방법으로 작성 하셨습니다.
메모리는 1112kb 사용하셨습니다.
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준] 2292 - 벌집 (2) | 2022.12.30 |
---|---|
[백준] 1712 - 손익분기점 (0) | 2022.12.30 |
[백준] 2941 - 크로아티아 알파벳 (2) | 2022.12.29 |
[백준] 5622 - 다이얼 (0) | 2022.12.29 |
[백준] 5622 - 다이얼 (0) | 2022.12.29 |