아래 코드와 깉이 하여 샘플 테스트케이스에 대해서는 옮은 답이나오는데
오답 처리가 되네요
어떤 부분을 놓친것일지 고민을 하여도 이해가 되지 않네요 ㅜ
#include <iostream>#include <string>#include <cstring>#include <vector>#include <algorithm>#include <limits.h>usingnamespacestd;inttestcaseN;stringwCString;intnumOfWord;stringnowWord;stringresultWord[50];intresultCount;boolmatch(intwCIndex,intwIndex);intmain(void){cin>>testcaseN;for(inti=0;i<testcaseN;i++){cin>>wCString;cin>>numOfWord;resultCount=0;for(intj=0;j<numOfWord;j++){cin>>nowWord;if(match(0,0)){resultWord[resultCount]=nowWord;resultCount++;}}//정렬sort(resultWord,resultWord+resultCount);//출력for(intj=0;j<resultCount;j++){cout<<resultWord[j]<<endl;}}return0;}boolmatch(intwCIndex,intwIndex){//중복되는 별 떙겨주기if(wCString[wCIndex]=='*'){while(wCString[wCIndex+1]=='*'){wCIndex++;}}if(wCIndex==wCString.length()-1){//와일드카드 마지막 문자이고if(wCString[wCIndex]=='*'){//그게 *이면 무조건 트루returntrue;}elseif(wCString[wCIndex]=='?'){//그게 ?이면if(wIndex==nowWord.length()-1)returntrue;elsereturnfalse;}else{//와일드카드 마지막 글자가 그냥 문자면if(wIndex==nowWord.length()-1&&//현재글자가 마지막글자이고wCString[wCIndex]==nowWord[wIndex]){//일치하면returntrue;}returnfalse;}}if(wCString[wCIndex]==nowWord[wIndex]){//현재것과 일치하면returnmatch(wCIndex+1,wIndex+1);}elseif(wCString[wCIndex]=='?'){//?면returnmatch(wCIndex+1,wIndex+1);}elseif(wCString[wCIndex]='*'){//별이지만 마지막이 아닌 경우charstarNext=wCString[wCIndex+1];while(starNext!=nowWord[wIndex]){//별다음문자와 일치할때까지 ++wIndex++;if(wIndex>nowWord.length()-1)//별다음게 일치하는게 없으면 FALSEreturnfalse;}returnmatch(wCIndex+1,wIndex);}returnfalse;}~~~
8년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
kdh9520
아래 코드와 깉이 하여 샘플 테스트케이스에 대해서는 옮은 답이나오는데
오답 처리가 되네요
어떤 부분을 놓친것일지 고민을 하여도 이해가 되지 않네요 ㅜ
8년 전