• 문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
조건
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));

 

미치는 줄 알았다.

 

코드 싹 갈고, 한 숨 자고 일어나서 다시 시도했다....

정말 힘들었다...;;

 


 

코드가 이상하거나, 이해가 되지 않는 부분이 있다면 언제든 댓글 남겨주세요! :)

+ Recent posts