CodingTest/Baekjoon

[baekjoon] 백준 1541번(파이썬): 잃어버린 괄호

JunJangE 2021. 5. 18. 20:05

문제

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

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

- 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 문제이다.

- 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있다.

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

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

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

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

알고리즘

- 식을 입력받는다. 이때, '-' 기준으로 나누어 입력받는다.

- 반복문을 통해 '+' 기준으로 있는 식을 더해주어 리스트에 담는다.

- 리스트에 들어간 수들을 순서대로 빼준다.

코드

# 입력 값을 '-' 기준으로 나누어준다.
m = input().split('-')

result = []
num = 0
for i in m:
    # 입력 값중에서 '+' 들어간 식은 '+'기준으로 나누어 변수에 넣는다.
    a = i.split('+')
    
    # '+'식이였던 수를 더해주기 위해.
    for j in a:
        num += int(j)
    # 더한값은 결과 리스트에 추가한다.
    result.append(num)
    # 더한 후 초기화
    num = 0
    
# 첫 번째값 대입
b = result[0]
# 마지막은 남은 모든 값을 순서대로 빼준다.
for k in range(1,len(result)):
    b -= result[k]

print(b)

결과

위 코드에서 밑에 반복문 위에 print(result)를 작성하게 되면 '+' 식이 있는 수들이 더해져 리스트에 담겨 있는 것을 출력 화면과 같이 확인할 수 있다.

<출력화면>

위 출력 화면을 보게 되면 '+' 식이 없었던 55와 '+'식이 있는 50과 40을 더한 값인 90이 리스트에 담겨 있는 것을 확인할 수 있다. 따라서 '+'가 있는 식을 먼저 괄호로 처리해주고 마지막에 '-' 처리를 하게 되면 식의 최솟값을 만들 수 있다.

github

 

junjange/CodingTest

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com