가장 흔한 접두어 질문좀 드릴게요! hiwaryi http://algospot.com/forum/read/1087/ 이글에 댓글 다신 이태윤 님의 힌트를 참고해서 짜봤는데요 계속 WA가 뜹니다. 도저히 무엇이 문제인지 모르겠네요.. 우선 input 에 입력을 한번에 다 받고, i 를 0~m , j 를 0~n 까지 돌리면서 테이블을 작성했습니다. 아래는 제 코드입니다 #include<stdio.h> #include<string.h> int main() { int c,n,m,len; int i,j,k; char input[3010][210]; int table[3010][210]; scanf("%d",&c); while(c--) { scanf("%d %d",&n,&m); for(int i=0;i<n;i++) scanf("%s",&input[i]); for(i=0;i<3010;i++) { for(j=0;j<210;j++) table[i][j]=0; } for(i=0;i<m;i++) { for(j=0;j<n;j++) { if('a'<=input[j][i] && input[j][i]<='z') { if(table[j][i]==1) continue; if(j==0) { len=strlen(input[0]); for(k=0;k<len;k++) table[0][k]=1; } else { if(input[j][i]==input[j-1][i]) table[j][i]=table[j-1][i]+1; else { len=strlen(input[j]); for(k=i;k<len;k++) table[j][k]=1; } } } } } for(i=0;i<m;i++) { int max=-1,print; for(j=0;j<n;j++) { if(!table[j][i]) continue; else { if(table[j][i]>max || max==-1) { max=table[j][i]; print=j; } } } for(j=0;j<=i;j++) printf("%c",input[print][j]); printf("\n"); } } } 12년 전
3개의 댓글이 있습니다. Being 문자열의 참조에 있어서, 항상 바운드를 넘어가지 않았는지 주의하셔야 합니다. 이 경우는 j번 스트링의 i번째 문자가 알파벳인지 검사하는 부분에 있어서 배열을 재사용하고 있으므로 사실은 쓰레기 값이지만 알파벳인 것으로 간주되어 테이블을 계산하게 됩니다. 12년 전 link Being 전체적으로 모든 문자열 참조에 있어 길이를 벗어나지 않았는지 점검하셔야 답이 나올 것 같습니다 :) 12년 전 link hiwaryi 이럴수가! 그거 하나 고치니까 바로 정답뜨네요 앞으로 주의해야겠어요. 감사합니다 :) 12년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
hiwaryi
http://algospot.com/forum/read/1087/
이글에 댓글 다신 이태윤 님의 힌트를 참고해서 짜봤는데요
계속 WA가 뜹니다.
도저히 무엇이 문제인지 모르겠네요..
우선 input 에 입력을 한번에 다 받고,
i 를 0~m , j 를 0~n 까지 돌리면서 테이블을 작성했습니다.
아래는 제 코드입니다
12년 전