[๋ฐฑ์ค/python] 1541๋ฒ : ์์ด๋ฒ๋ฆฐ ๊ดํธ
๋ฌธ์
์ธ์ค์ด๋ ์์์ +, -, ๊ทธ๋ฆฌ๊ณ ๊ดํธ๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ง๋ค์๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ธ์ค์ด๋ ๊ดํธ๋ฅผ ๋ชจ๋ ์ง์ ๋ค.
๊ทธ๋ฆฌ๊ณ ๋์ ์ธ์ค์ด๋ ๊ดํธ๋ฅผ ์ ์ ํ ์ณ์ ์ด ์์ ๊ฐ์ ์ต์๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค.
๊ดํธ๋ฅผ ์ ์ ํ ์ณ์ ์ด ์์ ๊ฐ์ ์ต์๋ก ๋ง๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด ์ฃผ์ด์ง๋ค. ์์ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ ‘-’๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ฐ์ฅ ์ฒ์๊ณผ ๋ง์ง๋ง ๋ฌธ์๋ ์ซ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ์ํด์ ๋ ๊ฐ ์ด์์ ์ฐ์ฐ์๊ฐ ๋ํ๋์ง ์๊ณ , 5์๋ฆฌ๋ณด๋ค ๋ง์ด ์ฐ์๋๋ ์ซ์๋ ์๋ค. ์๋ 0์ผ๋ก ์์ํ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ์์ ๊ธธ์ด๋ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ต์ ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
input = sys.stdin.readline
exp = input()
num = ""
sign = "+"
answer = 0
minus = False
for i in exp:
if i.isdigit(): # ์ซ์์ผ ๋
num += i
else: # ์ซ์ ๋
num = int(num)
if sign == "-":
minus = True
answer -= num
elif sign == "+":
if minus == True: # ๊ดํธ ์
answer -= num
else: # ๊ดํธ ๋ฐ
answer += num
sign = i # + ๋๋ - ์ ์ฅ
num = "" # num ์ด๊ธฐํ
print(answer)
์์ ๊ฐ์ ์ต์๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ์ต๋ํ ๋ง์ ์ซ์๋ฅผ ๋นผ์ผํ๊ธฐ ๋๋ฌธ์
-๊ฐ ๋์์ ๋ ๊ดํธ๊ฐ ์์๋์ด, ๋ค์ -๊ฐ ๋์ฌ ๋ ๊ดํธ๋ฅผ ๋ซ๊ณ ๋ค์ ๊ดํธ๋ฅผ ์ด์ด์ฃผ์ด์ผ ํ๋ค.
-๊ฐ ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๊ธฐํธ๋ฅผ ์ ์ฅํ sign์ ๋ง๋ค์ด ์ด๊ธฐ๊ฐ์ +๋ก ์ค์ ํด์ค๋ค.
์ ๋ ฅ๋ฐ์ ์ exp๋ ๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ์๊ธฐ ๋๋ฌธ์ ์ซ์๋ฅผ ๋ถ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค.
i๊ฐ ์ซ์์ผ ๋ ๋ฌธ์์ ํํ๋ก num์ ๋ํ๊ณ , i๊ฐ ๋ฌธ์์ผ ๋ num์ ์ซ์๋ก ๋ฐ๊ฟ์ค๋ค.
๊ธฐํธ๊ฐ ์ ์ฉ๋๋ ์ซ์๋ ๋ค์ ์ค๊ธฐ ๋๋ฌธ์, ๊ธฐํธ๋ฅผ sign์ ์ ์ฅํด๋์๋ค๊ฐ ๋ค์ ๊ธฐํธ๊ฐ ๋์์ ๋ ์ ์ฉํด์ผํ๋ค.
๋ง์ฝ sign์ -๊ฐ ์ ์ฅ๋์ด์๋ค๋ฉด minus๊ฐ ๋์์์ ์๋ฆฌ๊ธฐ ์ํด True๋ก ๋ฐ๊พธ๊ณ answer์์ num์ ๋บ๋ค.
sign์ +๊ฐ ์ ์ฅ๋์ด์์ ๋, minus๊ฐ True๋ผ๋ฉด ๊ดํธ ์์ ์๋ฏธํ๋ฏ๋ก answer์์ num์ ๋บ๋ค.
sign์ +๊ฐ ์ ์ฅ๋์ด์์ ๋, minus๊ฐ False๋ผ๋ฉด ๊ดํธ ๋ฐ์ ์๋ฏธํ๋ฏ๋ก answer์์ num์ ๋ํ๋ค.
sign์ ๋ค์ ๋ฌธ์๋ฅผ ์ ์ฅํ๊ณ num์ ๋น ๋ฌธ์์ด๋ก ๋ค์ ์ด๊ธฐํ ํด์ค๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 1992๋ฒ : ์ฟผ๋ํธ๋ฆฌ (0) | 2021.05.12 |
---|---|
[๋ฐฑ์ค/python] 11866๋ฒ : ์์ธํธ์ค ๋ฌธ์ 0 (0) | 2021.05.12 |
[๋ฐฑ์ค/python] 2231๋ฒ : ๋ถํดํฉ (0) | 2021.05.11 |
[๋ฐฑ์ค/python] 1002๋ฒ : ํฐ๋ (0) | 2021.04.13 |
[๋ฐฑ์ค/python] 2798๋ฒ : ๋ธ๋์ญ (0) | 2021.04.13 |