APS/SWEA
2007. 패턴 마디의 길이
문래동까마귀
2021. 8. 25. 23:27
문제에 조건이 명확하지 않음
- Test1 : 전체 문자열 비교 (명확하나 문제조건이 부실하여 오히려 정답 안됨)
#include <iostream>
#include <vector>
using namespace std;
int sun = 0;
string st;
int stsize;
bool check(string tmp, int len) {
int i = 0;
while(1) {
if (i+len >= stsize) break;
string be = st.substr(i + len, len);
if (tmp != be)
return false;
i += len;
}
return true;
}
void run() {
sun++;
cin >> st;
string tmp;
stsize = st.size();
for (int i = 1; i <= stsize; i++) {
if (stsize % i != 0) continue;
tmp = st.substr(0, i);
if (check(tmp, i)==1)
break;
}
cout << "#" << sun<<" "<<tmp.length();
cout << endl;
}
int main() {
int t = 0;
cin >> t;
for (int i = 0; i < t; i++) {
run();
}
return 0;
}
- Test2 : 문자열을 전체 다 확인할 필요 없이 다음문자열과만 비교
#include <iostream>
#include <vector>
using namespace std;
int sun = 0;
string st;
int stsize;
bool check(string tmp, int len) {
string be = st.substr(len, len);
if (tmp == be) return true;
if (tmp != be) return false;
}
void run() {
sun++;
cin >> st;
string tmp;
stsize = st.size();
for (int i = 1; i <= 10; i++) {
tmp = st.substr(0, i);
if (check(tmp, i)==1)
break;
}
cout << "#" << sun<<" "<<tmp.length();
cout << endl;
}
int main() {
int t = 0;
cin >> t;
for (int i = 0; i < t; i++) {
run();
}
return 0;
}