1-G 반례 질문입니다
244
작성한 질문수 13
https://www.acmicpc.net/source/49806907
Split()을 썼는데 강의를 보니 *이 한 번만 나오니 find()를 쓰면 됐을걸 그랬습니다.
궁금한 점은
s.erase()로 접두사와 접미사 전까지의 문자열을 다 삭제하였기 때문에 강의에서처럼 접두사+접미사의 길이보다 작은 문자열은 배제
substr은 아니지만 find를 통해 접두사/접미사가 문자열의 양 끝에 존재하는지 확인
하였는데 틀렸는지 잘 모르겠습니다..
백준 질문검색 기준 반례들을 다 테스트 해봐서 통과했으며 채점 10%에서 틀렸다고 나옵니다.
답변 1
1
안녕하세요. ㅎㅎ 코드에 주석달았습니다. 참고하세욥.
#include "bits/stdc++.h"
using namespace std;
vector<string> Split(string key, char delimeter){
string token = "";
int pos = 0;
vector<string> temp;
while((pos = key.find(delimeter)) != string::npos){
token = key.substr(0, pos);
temp.push_back(token);
key.erase(0, pos + 1);
}
temp.push_back(key);
return temp;
}
int i;
string s, p;
int main(){
cin >> i;
cin >> p;
vector<string> v;
v = Split(p, '*');
for(int j = 0; j < i; ++j){
cin >> s;
int a, b;
a = s.find(v[0]);
// 만약 v[0] 사이즈가 s보다 크다면?
s.erase(0, v[0].size());
// 만약 v[1] 사이즈가 s보다 크다면?
s.erase(0, s.length() - v[1].size());
b = s.find(v[1]);
// find는 왼쪽에서 부터 해당 부분있는것만 찾는건데. 우리는 왼오 끝부분만 같은 거를 찾는거 아닌가요?
if((a != s.npos) && (b != s.npos)){
cout << "DA" << '\n';
}
else{
cout << "NE" << '\n';
}
}
return 0;
}
1-E질문입니다!
0
533
2
3-L 틀린 부분 피드백 부탁드립니다.
0
835
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
470
1
문제 풀 때 방향성에 대해
0
809
1
맥에서 vs code로 실행 관련 질문입니다
0
530
1
17071번 메모리 초과
0
389
1
1-C질문입니다!
0
428
2
2-B BFS 시간초과질문
0
638
2
1-O 13번 라인
0
447
1
6-J 놀이공원 문제 질문
0
389
1
구현관련 질문
0
491
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
540
1
1-K
0
481
2
3-G번 질문있습니다.
1
480
3
3-C 실행 시간 질문드립니다.
0
503
1
4-A 문제 풀이 질문있습니다.
0
601
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
349
1
3-O go 함수 질문 드립니다.
1
453
2
4-A 출력 질문
0
307
1
1주차 1-O 질문드립니다
0
265
1





