728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 괄호를 어디에 쳤을 때 가장 최소가 되는 값을 얻을 수 있는지 구하는 문제이다.
값이 최소가 되려면 뺄셈 기호(-)를 기준으로 큰 값을 빼면 된다.
덧셈은 어차피 값이 커지므로 최대한 큰 값을 빼는 것을 목표로 한다.
뺄셈 기호(-)를 기준으로 식을 분리하고 분리된 식은 어차피 덧셈으로 값이 커진다. 하여 분리된 식을 각 계산한다.
계산한 결과 사이에는 모두 뺄셈이 존재하는 것이므로 뺄셈을 계산해 주면 최솟값이 나오게 된다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 식을 입력받아 마지막 enter를 제거한 뒤, -기호를 중심으로 식을 분리해 준다. s = sys.stdin.readline().rstrip().split('-')
- 분리한 식을 하나씩 추출하며 for i in range(len(s))
- 만약 추출한 식에 +기호가 포함되어 있다면 if ('+' in s[i])
- 해당 식을 계산한 결과를 저장할 변수를 생성하고 초기화한다. num = 0
- +기호를 중심으로 다시 식을 분리하고 분리된 값을 하나씩 추출하여 for j in s[i].split('+')
- 추출한 값을 정수형을 바꾸어 더해준다. num += int(j)
- 계산한 식의 결과를 저장해 준다. s[i] = num
- 반면에 추출한 식에 +기호가 포함되어 있지 않다면 else
- 추출한 식은 값 하나만 있는 식이므로 그냥 해당 값을 정수형으로 바꾸어 저장한다. s[i] = int(s[i])
- 하나의 값으로 모두 변환했다면 제일 처음 값을 정답에 저장한다. answer = s[0]
- 다음 값부터 하나씩 추출하며 for i in range(1, len(s))
- 정답에서 빼준다. answer -= s[i]
- 값을 모두 빼주었다면 정답을 출력해 준다. print(answer)
반응형
3. 소스코드
import sys
s = sys.stdin.readline().rstrip().split('-')
for i in range(len(s)):
if ('+' in s[i]):
num = 0
for j in s[i].split('+'):
num += int(j)
s[i] = num
else:
s[i] = int(s[i])
answer = s[0]
for i in range(1, len(s)):
answer -= s[i]
print(answer)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1966번 : 프린터 큐 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.02 |
---|---|
[백준] 11729번 : 하노이 탑 이동 순서 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.31 |
[백준] 2805번 : 나무 자르기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.29 |
[백준] 2748번 : 피보나치 수 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.26 |
[백준] 11727번 : 2xn 타일링 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.20 |
[백준] 2156번 : 포도주 시식 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.19 |
[백준] 1010번 : 다리 놓기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.18 |
[백준] 2442번 : 별 찍기 - 5 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.17 |