반응형
문제
https://www.acmicpc.net/problem/1541
-가 한번 나오고 난뒤부터는 모두 뺄셈으로 만들수 있다
예제를 보면 55-50+40 -뒤 플러스가 나오면 전부 묶어서 마이너스로 만들수 있다.
55-(50+40) 이런식이다.
처음 -가 나오는 기준으로 앞은 모두 더하고 뒤는 모두 빼면 될것이다.
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 | calc_list=list(input()) mp='' result=0 check=0#-가 나오는 시점부터 전부 마이너스 해준다. for i in range(len(calc_list)): if calc_list[i]!='-' and calc_list[i]!='+':#부호가 나오기전까지 숫자저장 tmp+=calc_list[i] else: if check==0: result+=int(tmp) tmp='' if calc_list[i]=='-':#-가 나온시점 체크 check=1 else:#-가 나온뒤 부터는 모두 빼준다. result-=int(tmp) tmp='' if i==len(calc_list)-1:#마지막숫자 처리 if check==0: result += int(tmp) else: result-=int(tmp) print(result) | cs |
문자열 처리가 매우 지저분하다.
-를 기준으로 나눠주고
배열의 처음것만 더해주고 나머지는 빼준다.
1 2 3 4 5 6 7 8 9 10 | calc_list=input() calc_list=calc_list.split('-') #처음 부분 모두 더해준다. result=sum(list(map(int,calc_list[0].split('+')))) calc_list.remove(calc_list[0]) #나머지 부분은 모두 빼준다. for i in range(len(calc_list)): result-=sum(list(map(int,calc_list[i].split('+')))) print(result) | cs |
조금은 보기 깔끔한거 같다.
반응형
'알고리즘(python) > 기본' 카테고리의 다른 글
[Python]분할정복 백준 1992 (0) | 2020.01.23 |
---|---|
[Python]분할정복 백준 2630 (0) | 2020.01.23 |
[Python]그리디 알고리즘 백준 11399 (0) | 2020.01.14 |
[Python]그리디 알고리즘 백준 1931 (0) | 2020.01.14 |
[Python]그리디 알고리즘 백준 11047 (0) | 2020.01.14 |
최근댓글