1 분 소요

1541번: 잃어버린 괄호

문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.


입력 조건

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고,

가장 처음과 마지막 문자는 숫자이다.

그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다.

수는 0으로 시작할 수 있다.

입력으로 주어지는 식의 길이는 50보다 작거나 같다.


출력 조건

첫째 줄에 정답을 출력한다.


첫 번째 시도 .

n=input()

number = []
sign = []
num=0
for i in n:
    if i == "+":
        sign.append('+')
        number.append(num)
        num=0
        continue
        
    if i == "-":
        sign.append('-')
        number.append(num)
        num = 0
        check = True
        continue
        
    num*=10
    num+=int(i)
number.append(num)

if '-' in sign:
    start = sign.index('-') +1
    print(sum(number[:start]) - sum(number[start:]))
else:
    print(sum(number))

»intput

55-50+40

»output

-35

success

image-20220223180834690


🌝 Thinking

규칙!

** ( - ) 부호가 처음 시작한 지점만 찾으면 된다.**

왜냐하면 ( - ) 부호 뒷 부분은 괄호를 이용하여 모두 음수로 만들 수 있기 때문이다.

  1. sign(리스트)에 부호를 담고 number(리스트)에 숫자를 담는다.
  2. ( - ) 부호가 최초로 등장했을때의 위치를 기준으로 앞의 수에서 뒤의 수를 빼면 된다.



💡 깨달은 점.

-

댓글남기기