로직을 말로 적으려니 쉬운게 아니네요ㅠ_ㅠ
혜안을 가지신 분, 일침을 가해주실 분들이 계실 거라 믿고 이렇게 도움을 요청드립니다.
아래는 소스입니다.
importjava.util.HashMap;importjava.util.Scanner;publicclassMain{staticintT;publicstaticvoidmain(String[]args)throwsException{Scannersc=newScanner(System.in);T=Integer.parseInt(sc.nextLine());for(inttestCase=1;testCase<=T;testCase++){Stringread=sc.nextLine();charmyChar;intixMain=0,ixSub=0;StringixKey="";// riginal quadtree의 x에 대한 정보를 가진 map HashMap<String,char[]>map=newHashMap<String,char[]>();// original quadtree의 상하반전 결과 mapHashMap<String,char[]>nMap=newHashMap<String,char[]>();if(read.length()==1){// 1자리는 그냥 출력// AnswerSystem.out.println(read);}else{do{myChar=read.charAt(ixMain);if(myChar=='x'){// x이면if(ixKey.length()>0){chararr[]=map.get(ixKey);arr[ixSub]=myChar;}ixKey+=ixSub;map.put(ixKey,newchar[4]);ixSub=0;continue;}else{chararr[]=map.get(ixKey);arr[ixSub++]=myChar;if(ixSub==4){// arrcharnArr[]=newchar[arr.length];for(inti=0;i<arr.length;i++){nArr[reflect(i)]=arr[i];}// keycharnKey[]=ixKey.toCharArray();for(inti=1;i<nKey.length;i++){nKey[i]=Character.forDigit(reflect(Character.getNumericValue(nKey[i])),10);}// nMap 에 적재nMap.put(String.valueOf(nKey),nArr);ixSub=Integer.parseInt(ixKey.substring(ixKey.length()-1))+1;ixKey=ixKey.substring(0,ixKey.length()-1);}}}while(++ixMain<read.length());// 답안작성intindex=0;ixKey=String.valueOf(index);StringBufferbuff=newStringBuffer("x");do{chararr[]=nMap.get(ixKey);buff.append(arr[index]);if('x'==arr[index]){ixKey+=index;index=0;}else{if(++index==4){if(ixKey.length()>1){index=Integer.parseInt(ixKey.substring(ixKey.length()-1))+1;ixKey=index==4?"END":ixKey.substring(0,ixKey.length()-1);}else{ixKey="END";}}}}while(ixKey!="END");// AnswerSystem.out.println(buff.toString());}}sc.close();}/* 상하반전을 위한 변경 * 0,1,2,3 분면 -(반전)-> 2,3,0,1 */privatestaticintreflect(intval){intresult=0;switch(val){case0:result=2;break;case1:result=3;break;case2:result=0;break;case3:result=1;break;}returnresult;}}
8년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
shucream
안녕하세요?
QUADTREE 문제에서 런타입오류 RTE (nonzero return code) 가 나는데,
원인이 무엇인지 정말 모르겠습니다.
제 로직은 이렇습니다.
주어진 quadtree 압축문자열을 읽어나가면서 4분면에 대한 HashMap 형태로 저장하고 해당 4분면을 반전시킨 결과를 별개의 답안용 HashMap에 저장
(예)
로직을 말로 적으려니 쉬운게 아니네요ㅠ_ㅠ
혜안을 가지신 분, 일침을 가해주실 분들이 계실 거라 믿고 이렇게 도움을 요청드립니다.
아래는 소스입니다.
8년 전