[白俊]1541-失われた括弧


Python 3コード
import re # 정규표현식 사용
import sys
input = sys.stdin.readline

p_num = re.compile('\d{1,5}') # 숫자 0~9 (5자리까지)
p_sign= re.compile('[+-]')  # 부호 (+,-)

# 식 입력
expression = input()

# 숫자, 부호 각각 리스트에 저장
nums = list(map(int, p_num.findall(expression)))
signs = p_sign.findall(expression)

ans = nums[0] # 답 (초기값: 첫번째 숫자)
sum = 0 # 뺄셈 괄호 영역 합

for i in range(len(signs)):
  # 부호가 음수면
  if signs[i] == '-':
    ans-= sum # sum 만큼 빼기
    sum= nums[i+1] # sum에 num[i+1] 대입
  else:
    if sum:
      sum += nums[i+1] # 뺄셈 괄호 영역 값으로 더해줌
    else:
      ans +=nums[i+1] # 더하기 (앞에 뺄셈 부호 없음..)

# sum에 값이 남아있으면 그 값 마저 빼주기
if sum:
  ans -= sum

print(ans)
解釈方法
  • 正規表現を使用して、文字列に数字と記号のリスト
  • をそれぞれ格納.
    繰り返し文
  • は、
  • シンボルの数で実行する.
  • sum変数を使用してカッコ領域
  • を加算
  • コードは+、-、だから-もしそうなら、ansからsumを減算します-記号の次の数字からかっこを始めます!
    (次のマイナス記号が表示されるまでカッコに追加します.)
  • +コード
  • sumが0でない場合:sumを加算します.
  • sumが0の場合、前に-記号がないことを示すので、ansに数字が加算されます.
  • 反復文
  • が終了し、sum値が残っていれば削除してもよい.
  • 💡 とてもシンプルなコード!!
    equation = input().split('-')
    add_list = []
    
    for num in equation:
        add_list.append(sum(map(int, num.split('+'))))
    
    answer = add_list[0]
    
    for i in range(1,len(add_list)):
        answer -= add_list[i]
    
    print(answer)
    -シンボルを基準として、リストに別々に保存します.
    -記号が最初に現れる前は+記号なので、前の数字が加算されます.
    -記号が出たら、後の数字を全部消せばいい!!
    いい考えのようですね.覚えてろ!