백준 1541 | 그리디 | 잃어버린 괄호 [파이썬 python]

2023. 5. 8. 19:33·Algorithm/백준
 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

처음 시도한 코드

math = input().split('-') # '-' 기준 분리

hap = []
for i in math:
    if i.isdigit(): # 숫자이면 정수로 바꿔 hap에 저장
        hap.append(int(i))
    else: # 문자열이면 eval 메소드로 식 계산
        hap.append(eval(i))

result = hap[0] 
for i in hap[1:]: # hap의 1번 이후 값들을 순차적으로 result에서 빼줌
    result -= i

print(result)

eval 메소드를 사용하려 했다.

하지만, math의 요소 i가 '00009 + 00009'와 같은 식이라면 isdigit에서 False로 else문을 실행하게 되어 eval 메소드에서 Syntex Error가 발생한다.

그 이유는 eval 메소드는 0으로 시작하는 숫자는 숫자값으로 인식하기 못하기 때문이다.

 

정답 코드

math = input().split('-') # '-' 기준 분리

hap = []
for i in math: # '+' 기준 분리하여 합을 구함
    temp = list(map(int, i.split('+'))) 
    hap.append(sum(temp))

result = hap[0] 
for i in hap[1:]: # hap의 1번 이후 값들을 순차적으로 result에서 빼줌
    result -= i

print(result)

math의 요소 i는 연산자가 모두 '+'이므로 '+'를 기준으로 다시 한번 분리해 준다.

분리한 결과를 temp에 저장하고 temp의 누적합을 구한다.

이 누적합은 i의 식을 계산한 것과 같은 결과이다.

누적합의 배열인 hap의 0번 요소를 result로 설정한 뒤, 1번 요소부터 순차적으로 result에서 빼면 구하고자 하는 결괏값을 구할 수 있다.

 

math, hap, result의 과정을 그림으로 나타내면 아래와 같다.

저작자표시 (새창열림)
'Algorithm/백준' 카테고리의 다른 글
  • 백준 7576 | BFS | 토마토 [파이썬 python]
  • 백준 1012 | DFS | 유기농 배추 [파이썬 python]
  • 백준 11724 | DFS / BFS | 연결 요소의 개수 [파이썬 python]
  • 백준 2810 | 그리디 | 컵홀더 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (44)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
백준 1541 | 그리디 | 잃어버린 괄호 [파이썬 python]
상단으로

티스토리툴바