알고리즘 공부/C++

백준 5555번 반지 C++

마달랭 2024. 7. 25. 21:41
반응형

리뷰

부분 문자열이 있는지 체크 + 문자열 순환이 필요한 문제

 

문제 풀이

  1. 부분 문자열 s를 받아오고 해당 문자의 길이를 변수 length에 초기화 한다.
  2. find 메서드를 통해 s의 첫 글자가 입력받은 문자열에 있는지 체크 하고 인덱스를 받아온다.
  3. 해당 문자열이 있는 부분을 0번 인덱스로 바꿔준다.
  4. 이후 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