백준 1541 파이썬

손찬호·2024년 4월 9일
0

알고리즘

목록 보기
16/91
post-thumbnail

문제

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

풀이 아이디어

적절하게 괄호를 쳐서 최소값을 만들면 된다.
'-'에서 다음 '-'까지 합을 구해서 빼주면 된다.

문제 1

예를 들어, 입력값이 40+50-30+70이고 '-'로 나누면 ['40+50', '30+70']이 된다.
이때 '40+50'은 더해줘야 계산결과가 제대로 나온다.
그리고 이후 나눠진 부분은 모두 합쳐서 빼줘야 원하는 결과를 얻을 수 있었다.

문제 2

'40+50'같은 입력을 받고 90을 만들도록 코딩을 했어야 했는데
어떻게 이 문자열을 파싱할 것인가?

문제 1 해결

'-'로 나눌 때 첫째항이 음수면 빼주고 아니면 더해주는 식으로 구현했다.

문제 2 해결

입력 '40+50'을 sum(map(int, 입력.split('+')))로 파싱해서 해결했다.

풀이 코드

inputText = input()
split_minus = inputText.split('-')
answer = 0

# 첫 부호가 -이면 빼고 +면 더해준다.
first = sum(map(int, split_minus[0].split('+')))
if inputText[0]=='-':
    answer-= first
else: 
    answer+= first

for element in split_minus[1:]:
    element = sum(map(int, element.split('+')))
    answer-=element

print(answer)
profile
매일 1%씩 성장하려는 주니어 개발자입니다.

0개의 댓글

관련 채용 정보