[백준] 1541번 : 잃어버린 괄호 (🥈실버 2) (Python)

2024. 1. 14. 20:33·◼ PS Note/백준
반응형

문제 바로 가기

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 


풀이

  • 사용 언어 : Python
  • 풀이한 날짜 : 2024-01-11
 
input_str = input()
answer = 0

# 1st. 수식 문자열을 항으로 분류하여 리스트로 만듦
exp_lst = []

number = [i for i in range(10)]
number_temp = []
for elem in input_str:
    if elem in str(number):
        number_temp.append(elem)
    else:
        exp_lst.append(''.join(map(str, number_temp)))
        number_temp.clear()
        exp_lst.append(elem)
exp_lst.append(''.join(map(str, number_temp)))


# 2nd. 계산
minus_flag = False
temp_sum = 0

for idx, elem in enumerate(exp_lst):
    if idx == len(exp_lst) - 1:
        temp_sum += int(elem)
        if minus_flag == True:
            answer -= temp_sum
        else:
            answer += temp_sum

    if elem == '+':
        pass
    elif elem == '-':
        if minus_flag == False:
            minus_flag = True
            answer += temp_sum
        else:
            answer -= temp_sum
        temp_sum = 0
    else:
        temp_sum += int(elem)

print(answer)

 

풀이 로직

  • 그리디 방식으로 문제를 해결하였다.
  • 식의 값을 최소로 만들려면 - 바로 뒤에 괄호를 치고 다음 -가 나오기 전에 괄호를 닫으면 된다.
  • 만일 -가 더 이상 나오지 않는다면 식의 마지막에서 괄호를 닫으면 된다.
  • -가 처음 나오기 전까지는 +만 등장하므로, 모든 숫자를 더하고 이를 결과값에 그대로 할당한다.

 

문제 접근 과정 및 느낀점

사실 이 문제는 다른 사람의 풀이를 참고해서 풀었다. 혼자서 오랜 시간 고민했음에도 마땅히 뾰족한 수가 보이지 않았기 때문이다.

처음에 생각한 풀이는 수식을 스택을 써서 후위 표기법으로 바꾼 뒤 또다시 스택을 써서 식을 계산하는 방식이었다. 하지만 이 방식은 지나치게 복잡해보였고, 이를 일일이 구현할 자신이 별로 없었다.

이번 문제는 그저 하나의 경험이라 생각하고 '이렇게 풀 수도 있구나'하고 넘겨야 겠다.

 

반응형

'◼ PS Note > 백준' 카테고리의 다른 글

[백준] 1074번 : 미로 탐색 (🥈실버 1) (Python)  (2) 2024.01.14
[백준] 1764번: 듣보잡 (🥈실버 4) (Python)  (0) 2024.01.14
[백준] 1074번 : Z (🥈실버 1) (Python)  (0) 2024.01.12
[백준] 1012번 : 유기농 배추 (🥈실버 2) (Python)  (0) 2024.01.12
[백준] 1107번 : 리모컨 (🥇골드 5) (Python)  (2) 2024.01.10
'◼ PS Note/백준' 카테고리의 다른 글
  • [백준] 1074번 : 미로 탐색 (🥈실버 1) (Python)
  • [백준] 1764번: 듣보잡 (🥈실버 4) (Python)
  • [백준] 1074번 : Z (🥈실버 1) (Python)
  • [백준] 1012번 : 유기농 배추 (🥈실버 2) (Python)
SangYoonLee (SYL)
SangYoonLee (SYL)
Slow, But Steady Wins The Race 😎
    반응형
  • SangYoonLee (SYL)
    ◆ Slow, But Steady ◆
    SangYoonLee (SYL)
  • 전체
    오늘
    어제
    • ◻ 전체 글 수 : (132)
      • ✪ 취미, 경험 회고 및 일상 (26)
        • [취미] Room Escape (2)
        • [회고] IT 관련 경험 회고 (18)
        • [일상] 일상 생각 (4)
        • [일상] 독후감 (1)
      • ◼ FrontEnd (30)
        • Web & HTML, CSS (9)
        • JavaScript (4)
        • TypeScript (1)
        • ReactJS (16)
      • ◼ CS (3)
        • 자료구조 & 알고리즘 (1)
        • 컴퓨터 구조 (1)
        • 운영체제 (1)
      • ◼ PS Note (40)
        • 백준 (38)
        • 프로그래머스 (2)
      • ◼ IT Etc. (33)
        • (Until 2021) (21)
        • Python (6)
        • C | C# | C++ (1)
        • Git (1)
        • Unity (4)
        • Game Dev. (0)
  • 블로그 메뉴

    • 홈
    • 💻 GitHub
    • 🟢 Velog
    • 🧩 온라인 방탈출 출시 작품 모음
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    개인 프로젝트
    unity
    더라비린스
    React
    1929
    백준
    리엑트
    소수 구하기
    회고
    Cpp
    코드숨
    Component
    위코드
    알고리즘
    유니티
    후기
    코딩 일기
    주간 회고
    관심사의 분리
    JavaScript
    방탈출고사
    Python
    프로젝트
    프로그래머스
    미궁 게임
    C++
    wecode
    pygame
    파이썬
    CodeSoom
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SangYoonLee (SYL)
[백준] 1541번 : 잃어버린 괄호 (🥈실버 2) (Python)
상단으로

티스토리툴바