728x90
문제 출처:https://www.acmicpc.net/problem/1543
1. 코드
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int main(void) {
char arr[2501];
char search[51];
scanf("%[^\n]s", arr);
getchar();
scanf("%[^\n]s", search);
int alen = strlen(arr);
int slen = strlen(search);
int count = 0;
for (int i = 0; i < alen; i++) {
bool chk = true;
for (int j = 0; j < slen; j++) {
if (arr[i + j] != search[j]) {
chk = false;
break;
}
}
if (chk) {
count++;
i += slen - 1;
}
}
printf("%d", count);
}
2. 해결 과정
현재 인덱스 값에서 인덱스 값과 찾고자하는 단어의 길이를 더한 인덱스 까지 주어진 단어인지 체크
중복을 피해야되기 때문에 같으면 현재 인덱스에 단어 길이 더해줌
만약에 일치하지 않으면 인덱스를 하나씩 증가하면서 다시 검사해준다.
3. 느낀점
문자열 비교해주면 되는데 계속 오류가 났다.
처음에 scanf 연달아 두개를 받을 수 없는것부터 오류가 났는데 getchar()도 해줘야한다는 것을 깨달았다.
중복을 방지해야하는 게 좀 까다로웠다.
chk도 이용해야한다는 것을 깨닫기에도 오랜 시간이 걸림ㅜ
728x90
'공부 자료 > 알고리즘' 카테고리의 다른 글
(C/C++) 백준 9613번 - GCD 합 (0) | 2021.07.08 |
---|---|
(C/C++) 백준 11944번 - NN (0) | 2021.07.07 |
(C/C++) 백준 1718번 - 암호 (0) | 2021.07.07 |
(C/C++) 백준 16360번 - Go Latin (0) | 2021.07.07 |
(C/C++) 백준 1259번 - 팰린드롬수 (0) | 2021.07.06 |