알고리즘 공부/C++
백준 5555번 반지 C++
마달랭
2024. 7. 25. 21:41
리뷰
부분 문자열이 있는지 체크 + 문자열 순환이 필요한 문제
문제 풀이
- 부분 문자열 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