일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 고득점KIT
- 데이터엔지니어
- 퀵정렬
- 데이터파이프라인
- SQL스터디
- Chatbot
- sql
- Sessions
- 백준
- 데이터엔지니어링
- divide and conquer
- 프로그래머스
- 알고리즘
- 챗봇
- OLTP
- BFS
- Cookies
- 웹기초
- Data Engineering
- Merge sort
- stack
- olap
- deque
- queue
- DFS
- QuickSort
- PYTHON
- 병합정렬
- 분할정복
- 탐색알고리즘
Archives
- Today
- Total
Trey
백준 1541번: 잃어버린 괄호 - 파이썬 본문
백준 1541번: 잃어버린 괄호(www.acmicpc.net/problem/1541)
💡접근
- 첫번째 숫자 다음 숫자부터, 마이너스 부호가 있을경우 다음 마이너스 부호가 나타나기전까지의 숫자들을 괄호처리하여 더한다. (아래의 그림을 참고하면 쉽게 이해될 것이다)
- 그리고 마이너스 부호가 없는 입력값의 경우는 다 더하기!
- 참고로, 예시를 보니 숫자의 위치는 바뀌지 않고, 괄호로 묶는다고해서 부호가 바뀌지는 않는다.
💡배운점 및 오답 원인
- 생각보다 예외조건 처리하는것이 까다로웠다..
💡풀이 코드
input = input()
# 마이너스 부호가 있으면 분류하기
if '-' in input:
subs = input.split('-')
# 마이너스 부호가 있었던 숫자들의 합 구하기
subs_sum = 0
for i in range(1, len(subs)):
# 더해야 할 숫자가 여러개인 경우
if '+' in subs[i]:
subs_sum += sum(map(int, subs[i].split('+')))
# 더해야 할 숫자가 하나인 경우
else:
subs_sum += int(subs[i])
first_sum = sum(map(int, subs[0].split('+'))) # 마이너스 부호 나오기 전 첫번째 숫자들의 합
print(first_sum-subs_sum) # 마이너스 부호 나오기전 숫자들의 합
# 마이너스 부호가 없으면 다 더하기
else:
print(sum(map(int, input.split('+'))))
'알고리즘 문제 풀이 (Class 3)' 카테고리의 다른 글
백준 1764번: 듣보잡 - 파이썬 (0) | 2021.03.21 |
---|---|
백준 1676번: 팩토리얼 0의 개수 - 파이썬 (0) | 2021.03.21 |
백준 1620번: 나는야 포켓몬 마스터 - 파이썬 (0) | 2021.03.21 |