본문 바로가기

Algorithm/Greedy

[Python] 백준 1541번 : 잃어버린 괄호 (S2) - 그리디단계별4

#문제

www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

#풀이 & 학습한 내용

"식의 값을 가능한 한 작게 만드는 문제"입니다. 그러기 위해서는 -수식을 기준으로 모두 괄호를 묶어주면 됩니다. 따라서 문자열을 split('-')로 나눈뒤에 나눠진 각각의 수식을 eval()함수를 통해 계산하려 했으나, 수가 0으로 시작할 수 있어서 문법오류가 발생했습니다. 따라서 생각을 하다가 -로 나눠진 수식을 다시 +로 나눠준 뒤 형변환(int)을 해서 더해주기로 했습니다.

 

#소스코드

1
2
3
4
5
6
7
8
exp = input().split('-'#'-'를 기준으로 수식분리
 
#'-'를 기준으로 분리된 수식 중 맨앞에 있는 수식만 양수
ans = sum(map(int,exp[0].split('+'))) 
for i in range(1,len(exp)):
  ans -= sum(map(int,exp[i].split('+'))) # 분리된 수식의 덧셈을 계산하여 빼준다
 
print(ans)
cs

 

github.com/HoYoungChun/Algorithm_PS/blob/master/Greedy/BOJ_1541.py

 

HoYoungChun/Algorithm_PS

Baekjoon Online Judge, Programmers problem solving by Python, C++ - HoYoungChun/Algorithm_PS

github.com