[白俊]1541-失われた括弧
Python 3コード正規表現を使用して、文字列に数字と記号のリスト をそれぞれ格納.
繰り返し文は、 シンボルの数で実行する. sum変数を使用してカッコ領域 を加算コードは+、-、だから-もしそうなら、ansからsumを減算します-記号の次の数字からかっこを始めます!
(次のマイナス記号が表示されるまでカッコに追加します.) +コード sumが0でない場合:sumを加算します. sumが0の場合、前に-記号がないことを示すので、ansに数字が加算されます. 反復文が終了し、sum値が残っていれば削除してもよい. 💡 とてもシンプルなコード!!
-記号が最初に現れる前は+記号なので、前の数字が加算されます.
-記号が出たら、後の数字を全部消せばいい!!
いい考えのようですね.覚えてろ!
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)
解釈方法繰り返し文
(次のマイナス記号が表示されるまでカッコに追加します.)
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)
-シンボルを基準として、リストに別々に保存します.-記号が最初に現れる前は+記号なので、前の数字が加算されます.
-記号が出たら、後の数字を全部消せばいい!!
いい考えのようですね.覚えてろ!
Reference
この問題について([白俊]1541-失われた括弧), 我々は、より多くの情報をここで見つけました https://velog.io/@ryujm/백준-1541テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol