기록하는삶
[코딩 테스트 연습(파이썬/Python)] 백준 1541번 _ 잃어버린 괄호 본문
728x90
반응형
https://www.acmicpc.net/problem/1541
[문제]
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
[입력]
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
[출력]
첫째 줄에 정답을 출력한다.
[아이디어]
1) 숫자들을 모두 찾아 왼쪽에 있는 0은 제거한다.(str.lstrip('0'))
2) '-'가 한번 등장하면, 이후에 나오는 모든 숫자는 음수화가 가능하다.
3) '-' 등장 이후 나오는 모든 '+'는 '-'로 바꾼다.
4) eval로 str을 연산한다.
import re
a = input()
x = re.compile('[0-9]+')
tmp = re.findall(x,a)
for s in tmp:
a = re.sub(s,s.lstrip('0'),a)
for i in range(len(a)):
if a[i]== '-':
a = a[:i]+a[i:].replace('+','-')
print(eval(a))
문자열은 항상 re 모듈을 적당히 사용하면 좋은 효율이 나오는 것 같다. 다만 코테에서 사용하려면 사용법을 잘 외워둘 필요가 있겠다.
728x90
반응형
'백준(Python) > 문자열' 카테고리의 다른 글
[코딩 테스트 연습(파이썬/Python)] 백준 4949번 _ 균형잡힌 세상 (0) | 2021.12.21 |
---|---|
[코딩 테스트 연습(파이썬/Python)] 백준 10808번 _ 알파벳 개수 (0) | 2021.12.21 |
[코딩 테스트 연습(파이썬/Python)] 백준 1181번 _ 단어 정렬 (0) | 2021.12.17 |
[코딩 테스트 연습(파이썬/Python)] 백준 11721번 _ 열 개씩 끊어 출력하기 (0) | 2021.12.17 |
[코딩 테스트 연습(파이썬/Python)] 백준 11718번 _ 그대로 출력하기1, 2 (0) | 2021.12.17 |