Post List

[BOJ] 백준 5555 반지

[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;
}

댓글