아래코드로 실행을 해 봤는데 오답이 발생합니다. 오답을 찾아보려고 했으나 저는 암만 봐도 찾을 수가 없어서 질문을 올립니다.ㅠㅠ
주석은 다 달아놨으니 혹시 코드에러를 찾아 주실 분 있으시면 정말 감사하겠습니다. 감사합니다
#include <iostream>#include <string.h>#include <math.h>usingnamespacestd;intmark[20];intridxlist[400];intcidxlist[400];intrstposlist[400];boolis_visible(intminrow,intmincol,intmaxrow,intmaxcol);intmain(){intrownum,colnum,initpos;cin>>rownum>>colnum>>initpos;memset(mark,0,sizeof(mark));intposcnt=0;for(inti=0;i<rownum;i++){for(intj=0;j<colnum;j++){intcurid=0;cin>>curid;if(curid==0)continue;// ridxlist, cidxlist 에 position들의 row idx, colume idx 를 저장 intidx=curid-1;ridxlist[idx]=i;cidxlist[idx]=j;// row 별로 position 존재여부를 integer array에 bit manipulation 으로 저장mark[i]|=(1L<<j);// poscnt에 valid 한 position의 개수를 저장합니다.poscnt=max(curid,poscnt);}}intmidx=initpos-1;intdiff=initpos-1;intrstcnt=0;while(midx<poscnt){intoridx=ridxlist[midx-diff];intocidx=cidxlist[midx-diff];intmridx=ridxlist[midx];intmcidx=cidxlist[midx];if(is_visible(min(mridx,oridx),min(mcidx,ocidx),max(mridx,oridx),max(mcidx,ocidx))){rstposlist[rstcnt]=midx-diff+1;rstcnt++;}midx++;}cout<<rstcnt<<endl;intrstidx=0;while(rstidx<rstcnt){cout<<rstposlist[rstidx]<<endl;rstidx++;}return0;}// 입력으로 주어진 영역에 장애물이 있는지 검사합니다. (없으면 true, 있으면 false)boolis_visible(intminrow,intmincol,intmaxrow,intmaxcol){// row나 column둘 중 하나라도 idx차이가 1일 경우에는 장애물이 없다는 뜻으로 true를 return if(((maxrow-minrow)==1)||((maxcol-mincol)==1))returntrue;// row나 column idx 차이가 0이면 그 라인을 아닐경우 그 사이에 있는 라인들을 검사하도록 minrow, maxrow etc 를 수정intrdiff=((maxrow-minrow)==0)?0:1;intcdiff=((maxcol-mincol)==0)?0:1;minrow+=rdiff;mincol+=cdiff;maxrow-=rdiff;maxcol-=cdiff;introwidx=minrow;unsignedintrstflag=0;unsignedintmask=(~((unsignedint)(-1)<<(maxcol-mincol+1)))<<mincol;// 검사하고 싶은 column 영역에만 bit가 켜지도록 mask변수를 설정while(rowidx<=maxrow){rstflag|=mask&mark[rowidx];rowidx++;}return(rstflag==0);}--------------
6년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
swg0110
아래코드로 실행을 해 봤는데 오답이 발생합니다. 오답을 찾아보려고 했으나 저는 암만 봐도 찾을 수가 없어서 질문을 올립니다.ㅠㅠ
주석은 다 달아놨으니 혹시 코드에러를 찾아 주실 분 있으시면 정말 감사하겠습니다. 감사합니다
6년 전