[Baekjoon] 1541. 잃어버린 괄호

Sungwoo·2025년 1월 8일
0

Algorithm

목록 보기
27/43
post-thumbnail

📕문제

[Baekjoon] 1541. 잃어버린 괄호

문제 설명

숫자와 +, -로 이루어진 문자열에서 적절하게 괄호()를 사용해 만들 수 있는 최솟값을 구하는 문제다.

예를들어
100-50+50 이 주어졌을 때의 최솟값은
100-(50+50) = 0이 된다.


📝풀이

최소합을 구하려면 -가 나올 때 다음 -가 나올 때 까지 괄호를 쳐주면 된다.
즉, 최대한 큰 수를 빼게끔 만들어주는 것이다.

해당 아이디어를 코드로 구현해보았다.

import sys
read = sys.stdin.readline

problem = str(read())
parenthesis = problem.split("-")
result = []
for numbers in parenthesis:
    total = 0
    number_list = numbers.split("+")
    for number in number_list:
        total += int(number)
    result.append(total)

if len(result) == 1:
    print(result[0])
else:
    for i in range(1, len(result)):
        result[0] -= result[i]
    print(result[0])
  • 주어진 문자열을 -를 구분자로 설정하여 자른다.
  • 잘라진 문자열들(하나의 숫자 혹은 +로 이루어진 수식)을 계산한 후 result에 저장한다.
  • result의 길이가 1인 경우(-가 존재하지 않는 경우) 첫번째 요소을 바로 반환한다.
  • 그렇지 않으면(-이 존재할 때) 배열의 첫번째 값에서 나머지 요소들을 뺀 후 반환한다.

0개의 댓글