[백준-2504] 괄호의 값

이말감·2022년 3월 23일
0

백준

목록 보기
19/49

문제

링크

코드

string = input()

save = []

def solution(brk1, brk2, num) :
	# 닫히는 괄호라도 맨 앞 글자라면 올바르지 않은 괄호
    if len(save) == 0 :
        print(0)
        exit(0)
    count = 0
    while save :
        pop = save.pop()
        # 바로 앞 문자가 여는 괄호일 경우
        if pop == brk1 :
        	# 여는 괄호 전에 숫자가 없었을 때
            if count == 0 :
                save.append(num)
            # 여는 괄호 전에 숫자가 있었을 때
            else :
                save.append(num*count)
            break
        # 바로 앞 문자가 짝이 안맞는 여는 괄호일 경우
        elif pop == brk2 :
            print(0)
            exit(0)
        # 바로 앞 문자가 숫자일 경우
        else :
            count += pop

for st in string :
	# 어차피 괄호가 닫혀야 올바른 괄호열이므로 닫힌 괄호만 확인
    if st == ')' :
        solution('(', '[', 2)
    elif st == ']' :
        solution('[', '(', 3)
    # 여는 괄호, 숫자는 다 넣기
    else :
        save.append(st)

for s in save :
	# 닫는 괄호는 append 하지 않았기 때문에 배열에 여는 괄호만 확인
    # 배열에 괄호가 남아있다면 올바르지 않은 괄호
    if s == '(' or s == '[' :
        print(0)
        exit(0)
print(sum(save))
  • 틀린 코드
st = input()

save = []

def check(now, bracket, num) :
    count = 0
    if bracket in save :
        while save :
            val = save.pop()
            if val != bracket :
                try :
                    count += int(val)
                except :
                    count = val
            else :
                if count == 0 :
                    count = num
                else :
                    count = count * num
                break
        save.append(count)
    else :
        save.append(now)

for s in st :
    if s == '(' or s == '[' :
        save.append(s)
    elif s == ')' :
        check(s, '(', 2)
    elif s == ']' :
        check(s, '[', 3)
        
try :
    print(sum(save))
except :
    print(0)

이 문제만 거의 15번 넘게 시도하고 3시간 이상 붙잡고 있었다.....ㅠㅠ
결국 다른 분들이 구현한 코드를 참고해서 완료할 수 있었다. (참고)

하지만 내가 구현한 코드가 50%까지 맞다가 틀렸다고 나오는 이유를 도저히 모르겠다...ㅜㅠ
백준에 질문 검색에 나오는 모든 반례를 적용해도 맞다고 나와서 결국 모르는 상태로 그만두었다.
이 문제는 꼭 다음에 한 번 더 풀어야 할 문제 꼭꼭꼭

profile
전 척척학사지만 말하는 감자에요

0개의 댓글