728x90
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
키포인트 : -를 기준으로 하여 괄호를 치는 것이 가장 작은 수를 만들 수 있다.
처음에는
마이너스가 존재하는 경우 아닌 경우로 풀이하였는데
+기준으로 분리하여 더한다는 것이 공통된 부분이였고
-1을 하는 것이 논리적으로 바로 알아보기 힘든 점이 있어서 개선하였다.
1. - 기준으로 분리
2. 첫번째 요소를 제외하고 다 더함
3. 첫번째 요소를 + 기준으로 분리하여 다시 빼고 * -1 한 후 return
4. 첫번째 요소를 + 기준으로 분리하여 더한 후 return
코드는 지저분 해도 통과는 하였음...
exp = input().split('-')
if len(exp) > 1: # 마이너스가 존재하는 경우
newExp = exp[1:]
sum = 0
for i in newExp:
plus = i.split('+')
for j in plus:
sum += int(j)
for k in exp[0].split('+'):
sum -= int(k)
print( sum * -1 )
else:
sum = 0
for i in exp:
plus = i.split('+')
for j in plus:
sum += int(j)
print(sum)
리팩토링 한 결과
1. - 기준으로 분리
2. 첫번째 요소 제외하고 다 뺌
3. 첫번째 요소를 + 기준으로 분리
4. 첫번째 요소를 다 더함
exp = input().split('-')
newExp = exp[1:]
sum = 0
for i in newExp: # 첫번째 요소 제외하고 모두 빼기 -> 마이너스 기준으로 나눈거라
plus = i.split('+')
for j in plus:
sum -= int(j)
for i in exp[0].split('+'): #첫번째요소 더하기
sum += int(i)
print(sum)
무작정 코드를 먼저 작성하는 것이 아니라 천천히 생각하면서 플로우를 생각한 후에
코딩을 하는 습관이 필요한 것 같다.
누가봐도 한번에 이해할 수 있게! 클린코드!
728x90
반응형
'Coding Test' 카테고리의 다른 글
백준 2217 - 로프 ( Python ) (0) | 2022.12.01 |
---|---|
백준 5585 - 거스름돈 ( Python ) (2) | 2022.11.29 |
백준 11047 - 동전 0 (Python) (0) | 2022.11.25 |
백준 11399 - ATM( Python ) (0) | 2022.11.23 |
백준 2839 - 설탕 배달 ( Python ) (0) | 2022.11.17 |