Notice
Recent Posts
Link
정화 코딩
[C++] 간판 (백준 5534번) 본문
https://www.acmicpc.net/problem/5534
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
string s;
cin >> s;
int ss = s.size();
int ans = 0;
for (int i = 0; i < n; i++) {
string st;
cin >> st;
int sts = st.size();
bool psb = false;
for (int j = 0; j < sts; j++) {
if (st[j] != s[0]) continue;
int jmp = 1;
int idx = 1;
while (true) {
if (st[j + idx * jmp] == s[idx]) {
idx++;
if (idx >= ss) {
psb = true;
break;
}
} else {
jmp++;
idx = 1;
if (jmp >= sts) break;
}
}
if (psb) break;
}
if (psb) ans++;
}
cout << ans << '\n';
}
처음에 제출했던 코드. 분명 다 맞는 것 같은데 왜 틀린건지 모르겠어서 좀 헤맸다. (WA)
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
string s;
cin >> s;
int ss = s.size();
int ans = 0;
for (int i = 0; i < n; i++) {
string st;
cin >> st;
int sts = st.size();
bool psb = false;
for (int j = 0; j < sts; j++) {
if (st[j] != s[0]) continue;
int jmp = 1;
int idx = 1;
while (true) {
if (j + idx * jmp < sts && st[j + idx * jmp] == s[idx]) { //수정
idx++;
if (idx >= ss) {
psb = true;
break;
}
} else {
jmp++;
idx = 1;
if (jmp >= sts) break;
}
}
if (psb) break;
}
if (psb) ans++;
}
cout << ans << '\n';
}
인덱스 확인해주는 부분을 추가하니 맞았다..! (AC) 왜 OutOfBound도 아니고 틀렸습니다가 뜬걸까? 암튼 결론은.. 인덱스 체크 잘 하자...
'PS' 카테고리의 다른 글
[C++] 스도쿠 (백준 2239번) (0) | 2024.10.14 |
---|---|
[C++] 도시 분할 계획 (백준 1647번) (0) | 2024.10.07 |
[C++] 용액 (백준 2467번) (1) | 2024.09.19 |
[C++] 구슬 탈출 2 (백준 13460번) (0) | 2024.09.19 |
[C++] 이번학기 평점은 몇점? (0) | 2024.09.16 |
Comments