코딩 테스트/Baekjoon

S2 1541. 잃어버린 괄호

  • -
728x90

  • 정답률 : 54%


st = list(input()) answer = 0 change = False num = '' #초기 부호 if st[0]=='-': sign = '-' else: sign = '+' for i in range(len(st)): # 괄호 열기 if st[i] == '-' and not change: change = True if sign == '-': answer -= int(num) else: answer += int(num) sign = '-' #다음 차례는 이걸로 확인 num = '' # 부호 변경, 괄호 내부일 때 elif st[i] == '+' and change: if sign == '-': answer -= int(num) else: answer += int(num) sign = '-' #다음 차례는 이걸로 확인 num = '' elif st[i] == '+' and not change: if sign == '-': answer -= int(num) else: answer += int(num) sign = '+' #괄호 안열려있을 때, +는 +그대로 num = '' elif st[i] == '-' and change: if sign == '-': answer -= int(num) else: answer += int(num) sign = '-' #다음 차례는 이걸로 확인 num = '' else: num += st[i] # 마지막 숫자 처리 if sign == '-': answer -= int(num) else: answer += int(num) print(answer)

이게 맞네..? 근데 처리 방식을 보면 맞는것 같기도 하고..

본격적으로 코드를 작성하기 전에 어떤 경우에 괄호를 열고 닫아야하는지 확인했다.
'-' 부호가 등장하는 경우, 뒷부분이 모두 '-'로 처리된다는 규칙을 찾았고, 이를 토대로 4개의 if문을 작성했다.

change는 '-'의 등장여부를 나타내고, '+'/'-'인 경우와 함께 change를 사용해서 4개의 if문이 작성되었다.

가장 헷갈렸던 부분은 sign을 처리하는 부분이었다. '+', '-'이 나올 때 answer에 값을 더하거나 빼야하는데 i 순서에서 나온 +,-로 더함과 뺄셈을 나누는 게 아니라 과거 sign을 기준으로 분류해야해서 헷갈렸다. 이 부분만 잘 처리해준다면 바로 해결될 것으로 보인다.

320x100

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.