작성
·
282
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
올려주신 해설과 다른 점을 딱히 못찾겠는데 제 코드는 10% 전에 틀렸습니다가 나오게 됩니다.
반례를 알려주세요 ㅠㅠ
#include <bits/stdc++.h>
using namespace std;
vector<string> split(string input, string delimiter) {
vector<string> ret;
long long pos = 0;
string token = "";
while (pos = input.find(delimiter) != string::npos) {
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + delimiter.length());
}
ret.push_back(input);
return ret;
}
int main() {
int cnt = 0;
cin >> cnt;
string pattern_str;
cin >> pattern_str;
vector<string> pattern = split(pattern_str, "*");
string s;
for (int i = 0; i < cnt; i++) {
cin >> s;
if(pattern[0].size() + pattern[1].size() > s.size()) cout << "NE" << "\n";
else {
bool check = (pattern[0] == s.substr(0, pattern[0].size())) && (pattern[1] == s.substr(s.size() - pattern[1].size()));
if (check) {
cout << "DA" << "\n";
} else {
cout << "NE" << "\n";
}
}
}
return 0;
}
답변 1
0
안녕하세요 유나님 ㅎㅎ
아주 미세한 차이인데요.
이렇게 해주셔야 해요(괄호가 비어서 split자체가 안되고 있었어요.)
while ((pos = input.find(delimiter)) != string::npos) {
나머지 부분은 정말 잘 짜셨어요 ㅎㅎ
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.