๋ฌธ์
๋ฐฑ์ค ์์ด๋ฒ๋ฆฐ ๊ดํธ https://www.acmicpc.net/problem/1541
์ฝ๋
formular = list(input())
formular.append('-')
have_to_sum = []
have_to_sub = []
operand = ''
for letter in formular:
if letter != '+' and letter != '-':
operand += letter
elif letter == '+':
have_to_sum.append(int(operand))
operand = ''
elif letter == '-':
have_to_sum.append(int(operand))
have_to_sub.append(sum(have_to_sum))
have_to_sum = []
operand = ''
answer = have_to_sub[0]
for i in range(1, len(have_to_sub)):
answer -= have_to_sub[i]
print(answer)
ํ์ด
'-'๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ดํธ๋ฅผ ์น๊ณ , ๋๋์ด์ง ๊ทธ๋ฃน๋ณ๋ก ํฉ์ ๊ตฌํ๊ณ , ์ด ๊ณผ์ ์ ๊ฑฐ์น ๊ฐ๊ฐ์ ์ซ์๋ค์ ๋นผ์ฃผ๋ฉด ๋๋ค.
ex) 3 + 4 - 21 - 19 + 13 + 6 ์ด๋ผ๋ ์์ด ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ก์ง์ผ๋ก ์ ์ผ ์์ ์๊ฐ ๋์จ๋ค.
3 + 4 - 21 - 19 + 13 + 6
โก๏ธ (3,4), (21), (19, 13, 6) >> (3 + 4), (21), (19 + 13 + 6)
โก๏ธ (7), (21), (38) >> 7 - 21 - 38
โก๏ธ -52
formular = list(input())
formular.append('-')
์ ๋ ฅ ํ์์ ๋ง์ถฐ์ ์ ๋ ฅ๋ฐ๊ณ , ํ๊ธ์ ํ๊ธ์ ๋๋์ด์ formular ๋ฐฐ์ด์ ๋ด๋๋ค.
'-' ๊ธฐ์ค์ผ๋ก ๊ธ์๋ฅผ ๋๋๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋ง์ง๋ง์ '-'๋ฅผ ์ถ๊ฐํ๋ค.
have_to_sum = []
have_to_sub = []
operand = ''
have_to_sum ๋ฐฐ์ด์ formular ๋ฐฐ์ด์ '-'๊ธฐ์ค์ผ๋ก ๋๋์์๋์ ์ซ์๋ค์ ๋ด๋ ๋ฐฐ์ด์ด๋ค.
have_to_sub ๋ฐฐ์ด์ have_to_sum์ ์์๋ค์ ํฉ์ ๋ด๋ ๋ฐฐ์ด์ด๋ค.
operand ๋ ํผ์ฐ์ฐ์๊ฐ ๋ ๋ณ์๋ค. ์๋ฅผ๋ค์ด ['3', '3'] ์ operand ๋ณ์์ '33'์ผ๋ก ๋ด๋๋ค.
for letter in formular:
if letter != '+' and letter != '-':
operand += letter
formular ๋ฐฐ์ด์์ ์์๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์จ๋ค.
๊ฐ์ ธ์จ ์์๊ฐ ์ซ์๋ผ๋ฉด,
operand์ ์์๋ฅผ ๋ฌธ์ํํ๋ก ์ด์ด ๋ถ์ธ๋ค.
elif letter == '+':
have_to_sum.append(int(operand))
operand = ''
๊ฐ์ ธ์จ ์์๊ฐ '+'๋ผ๋ฉด,
have_to_sum ๋ฐฐ์ด์ operand๋ฅผ ์ ์ํํ๋ก ๋ฐ๊ฟ์ ๋ฃ๋๋ค.
operand๋ ๋น ๋ฌธ์ํ์ผ๋ก ์ด๊ธฐํ ํ๋ค.
elif letter == '-':
have_to_sum.append(int(operand))
have_to_sub.append(sum(have_to_sum))
have_to_sum = []
operand = ''
๊ฐ์ ธ์จ ์์๊ฐ '-'๋ผ๋ฉด,
have_to_sum ๋ฐฐ์ด์ operand๋ฅผ ์ ์ํํ๋ก ๋ฐ๊ฟ์ ๋ฃ๋๋ค.
๊ทธ๋ฆฌ๊ณ have_to_sum ๋ฐฐ์ด์ ์์๋ ์ ์ํ ์์๋ค์ ํฉ์ have_to_sub ๋ฐฐ์ด์ ๋ฃ๋๋ค.
have_to_sum ๊ณผ operand๋ ๋น์ด์๋ ์ํ๋ก ์ด๊ธฐํ ์ํจ๋ค.
answer = have_to_sub[0]
for i in range(1, len(have_to_sub)):
answer -= have_to_sub[i]
answer๋ฅผ have_to_sub์ ๋งจ ์ฒ์ ์์๋ก ์ด๊ธฐํ ์ํค๊ณ ,
answer ์์ have_to_sub ์์์ ์ธ๋ฑ์ค 1๋ถํฐ ๋๊น์ง ๋บ๋ค.
๋ค๋ฅธ ์ฝ๋
formular = list(input().split('-'))
have_to_sub = []
for summ in formular:
sum_result = sum(map(int, summ.split('+')))
have_to_sub.append(sum_result)
answer = have_to_sub[0]
for i in range(1, len(have_to_sub)):
answer -= have_to_sub[i]
print(answer)
ํ์ด
๊ฒฐ๊ณผ๊ฐ ๋์ถ์ ์ ์ฒด์ ์ธ ๋ก์ง์ ์ ์ฝ๋์ ๋์ผํ๋ค. ์ด ์ฝ๋๋ ๋ด์ฅํจ์๋ฅผ ๋น๊ต์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์๋ค.
formular = list(input().split('-'))
have_to_sub = []
์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ '-'๊ธฐ์ค์ผ๋ก ๋๋์ด ๋ฐฐ์ดํ ํ๋ค.
ex) 3+4-21-19+13+6 โก๏ธ ['3+4', '21', '19+13+6']
for summ in formular:
sum_result = sum(map(int, summ.split('+')))
have_to_sub.append(sum_result)
sum_result๋ formular ์์์ ์ซ์ ํฉ์ด๋ค.
have_to_sub ๋ฐฐ์ด์ sum_result๋ฅผ ์ถ๊ฐํ๋ค.
sum(map(int, summ.split('+')))์ ๋ ์์ธํ ์ดํด๋ณด์๋ฉด
1. ๊ฐ์ ธ์จ ์์(summ)์ '+' ๊ธฐ์ค์ผ๋ก ๋๋์ด์ โก๏ธ summ.split('+')
2. ์๊ธด ์กฐ๊ฐ๋ค์ ์ ์ํ์ผ๋ก ๋ฐ๊ฟ์ โก๏ธ map(int, summ.split('+'))
3. ๋ชจ๋ ๋ํ๋ค โก๏ธ sum(map(int, summ.split('+')))
answer = have_to_sub[0]
for i in range(1, len(have_to_sub)):
answer -= have_to_sub[i]
answer๋ฅผ have_to_sub์ ๋งจ ์ฒ์ ์์๋ก ์ด๊ธฐํ ์ํค๊ณ ,
answer์์ have_to_sub ์์์ ์ธ๋ฑ์ค 1๋ถํฐ ๋๊น์ง ๋บ๋ค.
์๋กญ๊ฒ ๋ฐฐ์ด์ / ๋๋์
- a-b์์ b๋ฅผ ํฌ๊ฒ ํ๋ ์์ด๋์ด๋ ๋ ์ฌ๋์ง๋ง, '-'๊ธฐ์ค์ผ๋ก ๋๋๋ค๋ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ธฐ ํ๋ค์ด์ ์ฒ์์ ๋ง์ด ํค๋งจ ๋ฌธ์ ๋ค.
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ ๋ฅ๋ ฅ์ ์๊ตฌํ๋ค. ๊ทธ๋์ ๊ทธ๋ฆฌ๋ ํด๋ฒ์ ๊ทธ ์ ๋น์ฑ์ ๋ถ์ํ๋๊ฒ์ด ์ค์ํ๋ค.
- ๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋๊ฒ ์ค์ํ๊ฒ ๊ฐ๋ค. ์ด๋ฌํ ๋ฅ๋ ฅ์ ๊ธฐ๋ฅผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
'์ฝ๋ฉํ ์คํธ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฆฟ์ฝ๋] Find the Winner of the Circluar Game (0) | 2024.06.22 |
---|---|
[๋ฐฑ์ค] ๊ฑธ๊ทธ๋ฃน ๋ง์คํฐ ์ค์์ด (0) | 2024.06.21 |
[๋ฐฑ์ค] ์ ์ฐพ๊ธฐ (0) | 2024.06.19 |
[๋ฐฑ์ค] ๊ทธ๋ฆผ (0) | 2024.06.18 |
[๋ฐฑ์ค] ์ํธ ๋ง๋ค๊ธฐ (0) | 2024.06.17 |