반응형

   문제

   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


조금은 보기 깔끔한거 같다.


반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기