본문 바로가기
Coding Test

백준 1541 - 잃어버린 괄호 ( Python )

by Hyeonlog 2022. 11. 27.
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