반응형
리뷰
부분 문자열이 있는지 체크 + 문자열 순환이 필요한 문제
문제 풀이
- 부분 문자열 s를 받아오고 해당 문자의 길이를 변수 length에 초기화 한다.
- find 메서드를 통해 s의 첫 글자가 입력받은 문자열에 있는지 체크 하고 인덱스를 받아온다.
- 해당 문자열이 있는 부분을 0번 인덱스로 바꿔준다.
- 이후 s가 받아온 문자열에 온전히 있는지 체크해 준다.
참고 사항
처음엔 for문을 돌려 모두 찾아주었는데 find 메서드를 사용하면 코드 한줄에 해결할 수 있다.
정답 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
int n;
int cnt = 0;
cin >> s >> n;
int length = s.size();
while (n--) {
int index = 0;
string str;
cin >> str;
int a = str.find(s[0]);
if (a == -1)continue;
str = str.substr(a, str.size()) + str.substr(0, a);
if (str.find(s) != -1) cnt++;
/*for (int i = 0; i < 10; i++) {
if (str[i] == s[index]) index++;
if (index == length) {
cnt++;
break;
}
}*/
}
cout << cnt;
}
728x90
반응형
'알고리즘 공부 > C++' 카테고리의 다른 글
백준 16953번 A → B C++ (0) | 2024.07.26 |
---|---|
백준 1987번 알파벳 C++ (0) | 2024.07.25 |
백준 9507번 Generations of Tribbles C++ (0) | 2024.07.25 |
백준 10769번 행복한지 슬픈지 C++ (0) | 2024.07.25 |
백준 5347번 LCM C++ (3) | 2024.07.22 |