![[BOJ] 백준_1541번_잃어버린 괄호_Python3](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh2eoe%2FbtsAMkXBkT6%2FNZLFXDtHHbmtdblKWhKQc0%2Fimg.png)
🌟 잃어버린 괄호
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
조건
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
2 초 | 128 MB | 79282 | 42761 | 33525 | 53.312% |
문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
예제 입력 1
55-50+40
예제 출력 1
-35
풀이 계획
문자열을 돌면서 하나하나 계산하는 방식 문자열을 돌면서 -나 +가 있을 경우 end_points를 업데이트
- 가 나올경우 minus flag 를 확인한다. false일 경우 answer-minus_stack을 해주고 minus flag 을 true로 해준다.+가 나올 경우 minus flag를 확인한다. false라면 answer에 더하기, true라면 minus_stack에 더하기 +로 이루어진 값들을 minus_stack에 모아서 빼준다.
라고 생각했었는데 너무 복잡한 것 같고 다른 좋은 아이디어가 생각났다.
전체 문자열을 -로 split해주고 그 문자열의 0번째 인덱스(첫번째 수)에서 다음 덩어리들의 합을 계속 빼준다. 덩어리들의 합을 구하는 과정은 함수로 빼서 진행해보자.
풀이
import sys
read = sys.stdin.readline
def sum_calculator(s):
total = 0
for i in s.split('+'):
total += int(i)
return total
def solution():
formula = read()
formula = formula.split('-')
answer = sum_calculator(formula[0])
for i in range(1, len(formula)):
answer -= sum_calculator(formula[i])
print(answer)
solution()
'백준 알고리즘' 카테고리의 다른 글
[BOJ] 백준_2303번_숫자 게임_Python3 (4) | 2023.11.27 |
---|---|
[BOJ] 백준_1931번_회의실 배정_Python3 (2) | 2023.11.25 |
[BOJ] 백준_2012번_등수 매기기_C/C++ (6) | 2022.02.27 |
[BOJ] 백준_2810번_컵홀더_C/C++ (0) | 2022.02.26 |
[BOJ] 백준_16953번_A → B_C/C++ (0) | 2022.02.02 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!