[BOJ] 백준 5555 반지
반지는 xxxab 와 bxxxa가 같습니다. 원 모양이기 때문 입니다.
따라서 위 두개의 문자열이 같은지! 판별하는것이 중요한 문제 였습니다.
저는 반지 문자열의 첫 문자가 나왔다면, 그 다음도 같은지 체크하는 알고리즘을 채택하였습니다.
소스 코드 :
#include#include using namespace std; int main() { string s; cin >> s; cin.ignore(); int slen = s.length(); int n; cin >> n; cin.ignore(); int cnt = 0; for (int i = 0; i < n; i++) { string str; getline(cin, str); int strlen = str.length(); for (int j = 0; j < strlen; j++) { // 첫 문자가 같다면 if (str[j] == s[0]) { bool flag = false; // 나머지 문자들도 같은지 확인해준다. for (int k = 1; k < slen; k++) { if (str[(j + k) % strlen] != s[k]) { flag = true; break; } } // 나머지 문자들도 같다면 if (!flag) { cnt++; break; } } } } cout << cnt << endl; }
댓글
댓글 쓰기