문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
풀이
1. 나는 '-' 기준으로 쪼개기
2. 쪼개진 것끼리 덧셈
3. 첫번째 숫자 제외하고 뒤에 숫자 다 빼주기
의 전략으로 로직을 짜보려고 합니다.
소스코드
import sys
input = sys.stdin.readline
expression = input().strip() # 입력으로 주어진 식을 받습니다.
parts = expression.split('-') # '-' 연산자를 기준으로 식을 나눕니다.
result = 0 # 결과 값을 저장할 변수를 초기화합니다.
for i, part in enumerate(parts):
sub_parts = part.split('+') # '+' 연산자를 기준으로 나눈 부분을 구합니다.
if i == 0:
# 첫 번째 부분은 더하기만 수행합니다.
result += sum(map(int, sub_parts))
else:
# 나머지 부분은 빼기 연산을 수행합니다.
result -= sum(map(int, sub_parts))
# 결과를 출력합니다.
print(result)
'개발 > CodingTest' 카테고리의 다른 글
[자료구조] DFS 이란? (1) | 2024.01.23 |
---|---|
[백준] 13305번 - 주유소 - 그리디 알고리즘 (1) | 2024.01.22 |
[백준] 11399번 - ATM - 그리드 알고리즘 (1) | 2024.01.22 |
[백준] 1931번 - 회의실 배정 - 그리디 알고리즘 (1) | 2024.01.22 |
[이코테] 커리큘럼 - 이해까지 도와주는 풀이 (0) | 2024.01.21 |