백준

1541번 잃어버린 괄호

판다꼬마 2022. 3. 9. 02:04
728x90

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

내 풀이

ㅠㅠ

해결 방법

알고리즘은 이해는 하였다.

-뒤에 있는 모든 숫자를 다 괄호로 묶어서 빼면 되는데 어떻게 코드를 짜야할지 계속 고민하였다.

고민하다가 구글링을 통해서 코드를 보았는데 생각보다 단순해서 아쉬웠다.

 

구글 풀이

https://mong9data.tistory.com/66

a=input().split('-')

sum=0
for i in a[0].split('+'):
    sum=sum+int(i)

for i in a[1:]:
    for j in i.split('+'):
        sum=sum-int(j)

print(sum)

50+10+20-30+30+40+50을 값으로 입력하면

-로 split 되어 리스트에 저장이 된다 

a=['50+10+20', '30', '30+40+50']처럼 저장이 된다.

 

이후 첫 번째부터 +로  split 하여 각 숫자를 sum에 더해준다.

 

다음 a [1]부터 끝까지 반복하는데 반복문을 하나 더 넣었다.

첫 번째 만나는 - 전까지의 모든 숫자를 더했으니 다음 나오는 숫자부터는 다 빼줘야 한다.

- 뒤에 있는 숫자는 자동으로 숫자로 분류가 되어서 sum에 빠지고

+뒤에 잇는 숫자는 다시 +로 분류해 숫자로 구분해 sum에 빼야 하여 코드를 이렇게 작성하였다.

 

느낀 점

for i in a [1:]을 쓰면 a [1]부터 끝까지 모든 값을 반복

for i in a [1:5]를 쓰면 a [1]부터 a [5-1]까지 반복하는 것을 의미한다

 

728x90