(진행중) [백준] 잃어버린 괄호

데린이·2022년 5월 24일
0

표현식의 계산 순서를 임의로 정한 뒤, 계산 결과 중 가장 작은 값을 나타내기
https://www.acmicpc.net/problem/1541

22-05-24

import re


expression = re.sub(r'\d+',lambda x : str(int(x.group())),str(input())) # 0009 -> 9로 처리해서 받음

while re.findall(r'\d+[+-]',str(expression)) :
    opr = re.findall(r'[+-]',expression)
    
    if len(opr) > 1 and (opr[0] == '-') and (opr[1] == '+'): # 두번째 항 계산
        expression = re.sub(r'\d+[+]\d+',lambda x: str(eval(x.group())),expression, count =1 )
    else:# 첫번째 항 계산
        expression = re.sub(r'[-]?\d+[+ -]\d+',lambda x: str(eval(x.group())),expression, count =1 ) 
    
print(expression)

계산 속도: 132ms

정규 표현식으로 코드를 잘 작성했으나, 위 해설보다 좀 더 영리한 방법이 있음

  1. split을 사용할 것
  2. 정규 표현식 사용안해도 풀 수 있음
  3. 코드가 3줄 정도로 끝날 수 있음.
profile
취뽀를 기원하는 취준생입니다!

0개의 댓글