- 문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
조건
1. 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다.
2. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
3. 첫째 줄에 정답을 출력한다.
- 코드
# 입력부
cal=list(input().split("-")); #마이너스를 기준으로 앞 뒤를 짜름.
# 처리부
result=0; #변수 선언
for i in cal[0].split('+'): #마이너스가 등장하기 전
result+=int(i);
for j in cal[1:]: #마이너스가 등장한 후
for k in j.split('+'):
result-=int(k); #마이너스가 등장했으므로, 이후 수는 모두 빼야 함.
# 출력부
print(result);
- 여담
eval 함수에 빠져서 진짜 지옥을 맛봤다.
eval 함수로 쉽게 풀고 넘어가려고 했으나, 0으로 시작하는 걸 처리하지 못해 정말 힘들었다.
<처음 작성한 코드>
# 입력부
cal=list(input())
# 처리부
for i in range(len(cal)):
if(cal[i]=='-'):
cal.insert(i+1,"(");
if(i+2==len(cal)):
cal.append(")");
result="".join(cal);
# 출력부
print(eval(result));
미치는 줄 알았다.
코드 싹 갈고, 한 숨 자고 일어나서 다시 시도했다....
정말 힘들었다...;;
| 코드가 이상하거나, 이해가 되지 않는 부분이 있다면 언제든 댓글 남겨주세요! :) |
'Programming > Python' 카테고리의 다른 글
| [백준] 10872번 : 팩토리얼 (Python / 파이썬) (0) | 2023.01.01 |
|---|---|
| [백준] 2577번 : 숫자의 개수 (Python / 파이썬) (0) | 2023.01.01 |
| [백준] 5585번 : 거스름돈 (Python / 파이썬) (0) | 2023.01.01 |
| [백준] 1026번 : 보물 (Python / 파이썬) (0) | 2023.01.01 |
| [백준] 11047번 : 동전 0 (Python / 파이썬) (0) | 2022.12.30 |