티스토리 뷰

728x90
반응형

문제

 

www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

코드

N = input().split('-')  # 입력값을 '-'를 기준으로 입력받는다. ex) ['55', '50+40'] 
                        # 최솟값을 찾기 위해서는 '-' 이전 이후로 나눠서 연산을 해준뒤에 계산하면 최솟값이 나온다.
result = []             
for i in N:
    result.append(list(map(int,i.split('+'))))
                        # '+'연산자로 묶인 것들은 더해 주기 위해서 리스트에 넣어준다. ex) [[55], [50,40]]

Sum = []
for i in result:
    cnt = 0
    for j in i:
        cnt += int(j)
    Sum.append(cnt)     # Sum에 계산한 값들을 넣어준다. [55, 90]
                        # Sum에 있는 수들은 모두 '-'를 기준으로 나눠져 있는 수들이다

total = Sum[0]          # '-' 이전값에서 이후값을 빼주기 위해서 total에 먼저 이전값을 넣어준다.
for i in range(1,len(Sum)):
    total -= Sum[i]

print(result)

 

 

코드설명

입력값중에 괄호를 적절히 쳐서 최솟값으로 만드는 문제이다.

 

최솟값을 만들기 위해서는 -를 기준으로 나누고 연산을 먼저한뒤에서 마지막에 -연산을 하면 최솟값이 된다.

그래서 맨처음에 split('-')을 통해 나눠주고 나눠준 값들을 계산하기 위해서 split('+')통해서 나눠준뒤에 계산한 값들을 Sum에 저장한다.

 

Sum에 있는 값들을 -연산을 한뒤에 출력하면 최솟값이 된다.

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30