@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • AWS CodeCatalyst
  • Agent
  • AWS CodeStar
  • CLASS
  • sagemaker unified studio
  • bedrock
  • 티스토리챌린지
  • 인터페이스
  • invokemodel api
  • 심폴릭링크
  • knowledge bases
  • Python
  • AWS CodeArtifact
  • converse api
  • bedrock api
  • java
  • SageMaker
  • flink
  • bedrock agent
  • 오블완

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Algorithm/Baekjoon

Python 1541번 잃어버린 괄호

2022. 8. 7. 22:11
반응형

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

 

수열 문제라서 되게 코드가 간결할줄 알았는데 짜다보니 코드가 점점 길어지는 것 같다ㅏ,,,

먼저 입력으로 주어진 문자열에서

operator와 num을 다른 리스트로 분리하였고 res라는 리스트를 따로 만들어서 - 이후의 숫자를 계산한 값을 넣도록 만들었다.

예를 들어 55-50+40+30+20-30-25 가 입력으로 주어졌을때 리스트가 [55, '-', 140, '-', 30, '-', 25]이런식으로 만들어지도록 코드를 구현했다. 이렇게 된 리스트를 이제 계산만 해주면 최솟값을 쉽게 구할 수 있다.

import sys
input = sys.stdin.readline

inp = str(input())
outp=''
num=[]
op=[]
#op와 num 분리
for i in range(len(inp)):
    if inp[i] == '-':
        num.append(int(outp))
        outp=''
        op.append('-')
    elif inp[i] =='+':
        num.append(int(outp))
        outp = ''
        op.append("+")
    elif inp[i] =='\n':
        num.append(int(outp))
    else:
        outp+=inp[i]

res=[]
def recur(idx,numb):
    prev=numb
    for i in range(idx,len(op)):
        if op[i]=='-':
            res.append(prev)
            res.append("-")
            sum1=recur(i+1,num[i+1])
            return
        else:
            prev+=num[i+1]
    res.append(prev)
    return

recur(0,num[0])
sum=0
pass0=False
for i in range(len(res)):
    if res[i]=="-":
        sum-=res[i+1]
        pass0=True
    else:
        if pass0:
            pass0=False
            continue
        else:
            sum+=res[i]
print(res)
print(sum)
반응형
저작자표시 (새창열림)

'Algorithm > Baekjoon' 카테고리의 다른 글

Python 15686번 치킨 배달  (0) 2022.09.09
Python 16234번 인구 이동  (0) 2022.08.06
Python 16929번 Two Dots  (0) 2022.08.05
Python 16928번 뱀과 사다리 게임  (0) 2022.08.05
Python 11048번 이동하기  (0) 2022.08.03
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • Python 15686번 치킨 배달
    • Python 16234번 인구 이동
    • Python 16929번 Two Dots
    • Python 16928번 뱀과 사다리 게임
    @Eeap
    @Eeap

    티스토리툴바