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