-
[백준] 1541번: 잃어버린 괄호 (Python)Algorithm PS👩🏻💻/백준 2023. 4. 23. 01:38
1. 문제
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
2. 문제 풀이
- 첫 번째 '-' 이전의 값은 더하고, 그 이후의 값은 모두 빼준다.
- '-', '+' 를 기준으로 나누고, '-'의 위치를 기준으로 숫자들의 합을 주해주면 되기 때문에 필요하기 때문에 정규식(re)이 필요했다.
- 정규식
- 정규식(re) 패턴 참고 사이트
- []: 안에 들어간 문자를 기준으로 모두 구분한다. ex) '[AB]' : A또는 B를 기준으로 나눈다.
- (): 구분자를 포함하여 list 생성. ex) '([AB])' : A, B를 기준으로 나누고 A, B를 포함하여 list 생성.
- +: 연속된 구분자는 하나로 친다. ex) '[0-9]+': 0~9까지의 연속된/아닌 순자 모두를 구분자.
# input : 55-50+40 strings = input() expr = re.split('([-+])', strings) print(expr) #['55', '-', '50', '+', '40']
3. 코드
import re strings = input() ops = re.split('[0-9]+', strings)[1:-1] nums = list(map(int, re.split('[-+]', strings))) result = 0 i = len(nums) if '-' in strings: i = ops.index('-') result = sum(nums[:i+1]) - (sum(nums[i+1:])) print(result)
'Algorithm PS👩🏻💻 > 백준' 카테고리의 다른 글
[백준] 21314번: 민겸 수(Python) (0) 2023.05.14 [백준] 2615번: 오목 (완전탐색, Python) (0) 2023.05.10 [백준] 2887번: 행성 터널(그래프, Python) (1) 2023.05.10 [백준] 22858번: 원상 복구 (small) (Python) (0) 2023.05.07 [백준] 20438번: 출석체크 (Python) (0) 2023.05.04