개발자일걸요..?

1541번 잃어버린 괄호 본문

알고리즘코딩/Baekjoon Online Judge

1541번 잃어버린 괄호

Re_A 2021. 2. 21. 21:40
728x90
반응형

문제링크 : www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net



<알고리즘>

  1) 부호가 두 종류밖에 없으므로 부호를 기준으로 수를 구분하여 수와 부호의 배열 생성

  2) 사이의 부호를 +로 한 두 수를 괄호로 묶어 앞에 빼는 수를 커지게 만듦

  3) 덧셈들을 모두 수행한 후에 앞에서부터 차례대로 뺄셈 수행

  => 덧셈들을 괄호로 묶어 먼저 수행해줌으로써 뺄셈의 수가 더 커지게 만듦

 

 

( 메모리 : 28776KB    시간 : 64ms)

import sys
strinput = sys.stdin.readline()

#숫자는 numbers에 기호는 sign에 넣기
numbers = []
sign = []
number = ""
for i in range (len(strinput)):
    if((strinput[i] == "-") or (strinput[i]== "+")):
        sign.append(strinput[i])
        numbers.append(int(number))
        number = ""
    else:
        number+=strinput[i]
numbers.append(int(number))

index = 0
while(True):
    if(index==len(sign)):
        break
    if(sign[index] == '+'):
        numbers[index] += numbers[index+1]
        del numbers[index+1]
        del sign[index]
    else:
        index+=1

result = 0
for j in range(0,len(sign)):
    numbers[j+1] = numbers[j]-numbers[j+1]
print(numbers[len(numbers)-1])
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

10773번 제로  (0) 2021.02.22
10828번 스택  (0) 2021.02.22
1931번 회의실 배정  (0) 2021.02.21
13305번 주유소  (0) 2021.02.20
11399번 ATM  (0) 2021.02.20
Comments