안녕하세요, 코딩을 하다 문제가 해결이 안 되어서 글을 남기게 되었습니다.
Mismatched Parenthesis 라는 문제인데요, 이 전 문제인 Brackets2 는 아무런 문제없이 잘 통과하여 이 문제또한 쉽게 통과할거라 생각했었는데 오답이라고 자꾸만 나오네요..
개인적으로 이런 저런 예제들을 넣어서 해 봤을때에는 priority에 맞게 잘 작동을 하였는데 혹시 예외의 경우, 예를들어 제일 처음으로(앞으로) 오는 char가 왼쪽 가로 가 아닐 경우 오류가 나는 것인지 잘 모르겠네요..
에러가 나는 예제 값이 있다면 쉽게 디버그해서 무엇이 문제인지 확인을 해 볼 수 있을텐데 말이죠..
if__name__=='__main__':T=int(input())fortinrange(T):s_raw=input()list_raw=s_raw.split(" ")s_ori=list_raw[0]prio_l=list(list_raw[1])#priority left parenthesis list.prio_r=[]#priotiry right parenthesis.s_modi=[]if(len(s_ori)>100orlen(prio_l)!=4orlen(s_ori)%2==1):passelse:#define right parenthesis.foriinrange(4):if(prio_l[i]=="("):prio_r.append(")")elif(prio_l[i]=="{"):prio_r.append("}")elif(prio_l[i]=="["):prio_r.append("]")else:prio_r.append(">")s_corr=[""]*len(s_ori)#corrected full stringc_pop=0#used for multiple brackets foriinrange(len(s_ori)):if(len(s_modi)==0):#if the list is empty, add one item into s_corrected and s_modifys_corr[i]=s_ori[i]s_modi.append(s_ori[i])c_pop=0else:#if right parenthesis is found...if(s_ori[i]==")"):if(s_modi[-1]=="("):s_corr[i]=")"else:#priority.if(prio_l.index(s_modi[-1])<prio_l.index("(")):#current item has less prioritys_corr[i]=prio_r[prio_l.index(s_modi[-1])]else:#high priority, then change old left bracket and add right bracket alsos_corr[i-c_pop*2-1]="("s_corr[i]=")"s_modi.pop()c_pop+=1elif(s_ori[i]=="}"):if(s_modi[-1]=="{"):s_corr[i]="}"else:#priority.if(prio_l.index(s_modi[-1])<prio_l.index("{")):s_corr[i]=prio_r[prio_l.index(s_modi[-1])]else:s_corr[i-c_pop*2-1]="{"s_corr[i]="}"s_modi.pop()c_pop+=1elif(s_ori[i]=="]"):if(s_modi[-1]=="["):s_corr[i]="]"else:#priority.if(prio_l.index(s_modi[-1])<prio_l.index("[")):s_corr[i]=prio_r[prio_l.index(s_modi[-1])]else:s_corr[i-c_pop*2-1]="["s_corr[i]="]"s_modi.pop()c_pop+=1elif(s_ori[i]==">"):if(s_modi[-1]=="<"):s_corr[i]=">"else:#priority.if(prio_l.index(s_modi[-1])<prio_l.index("<")):s_corr[i]=prio_r[prio_l.index(s_modi[-1])]else:s_corr[i-c_pop*2-1]="<"s_corr[i]=">"s_modi.pop()c_pop+=1#otherwise just add more into s_corr and s_modi.else:s_corr[i]=s_ori[i]s_modi.append(s_ori[i])print(''.join(s_corr))
6년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
Zenon
안녕하세요, 코딩을 하다 문제가 해결이 안 되어서 글을 남기게 되었습니다.
Mismatched Parenthesis 라는 문제인데요, 이 전 문제인 Brackets2 는 아무런 문제없이 잘 통과하여 이 문제또한 쉽게 통과할거라 생각했었는데 오답이라고 자꾸만 나오네요..
개인적으로 이런 저런 예제들을 넣어서 해 봤을때에는 priority에 맞게 잘 작동을 하였는데 혹시 예외의 경우, 예를들어 제일 처음으로(앞으로) 오는 char가 왼쪽 가로 가 아닐 경우 오류가 나는 것인지 잘 모르겠네요..
에러가 나는 예제 값이 있다면 쉽게 디버그해서 무엇이 문제인지 확인을 해 볼 수 있을텐데 말이죠..
6년 전