문제
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
풀이
인터넷 코드가 더 깔끔하여 가져와보았다.
깔끔한 풀이
a = input().split('-') #-로 나누어줌
num = []
for i in a: # 나눈 문자 순회
cnt = 0
s = i.split('+') # +로 나눔
for j in s: # +로 나눈 문자열을 순회하면서
cnt += int(j) # cnt에 더하기
num.append(cnt) # 계산한 숫자를 리스트에 넣기
n = num[0] # 첫 숫자에서 빼기 위해서 첫 숫자로 초기화
for i in range(1, len(num)):
n -= num[i] # 빼주기
print(n)
-로 구분하여 나눈다. ( -가 시작되면 다음 -가 나오기전까지 괄호를 묶어줘야 가장 큰 숫자를 뺄수있기 때문이다)
나눈 문자열을 다시 +로 구분하여 나누고 계산해준다.
첫 숫자에서 나머지 숫자를 빼준다.
내 코드
x = input()
num=''
sol_str=''
for i in x:
if i=='-' or i=='+':
sol_str+=num.lstrip('0')
num=''
sol_str+=i
else:
num+=i
sol_str+=num.lstrip('0') # 앞에 있는 0을 제외함
sol_str=sol_str.split('-') # -로 나눔
sol_str = eval('-'.join(list(map(str,map(eval,sol_str))))) # 계산하고 str로 바꿔서 -로 바꾸고 다시 계산함
print(sol_str)
풀이 방법은 같은데 코딩이 다르다. 나는 뭔가 뱅글뱅글 돌아간 느낌
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #14889 - 스타트와 링크 (0) | 2022.01.18 |
---|---|
[Python] 백준 #13305 - 주유소 (0) | 2022.01.18 |
[Python] 백준 #11047 - 동전 0 (0) | 2022.01.17 |
[Python] 백준 #1931 - 회의실 배정 (0) | 2022.01.16 |
[Python] 백준 #11725 - 트리의 부모 찾기 (0) | 2022.01.15 |