๐ก ์กฐ๊ฑด ๋ฐ ํ์ด
- ๊ณ์ฐ ๊ฐ๋ฅํ ์์์ด ์๋
expression
์ด ์ฃผ์ด์ง๋ฉฐ, ๊ธธ์ด๊ฐ 3์ด์ 100์ดํ
์ธ ๋ฌธ์์ด.
- ์ฐ์ฐ์๋
+, -, *
๋ง ์๋ค. ํผ์ฐ์ฐ์๋ 0 ์ด์ 999
์ดํ๋ค.
- ๊ฐ์ ์ฐ์ฐ์๋ ์์ ์๋ ๊ฒ์ด ๋ ์ฐ์ ์์๊ฐ ๋๋ค.
- ์ฐ์ฐ์์ ์ฐ์ ์์๋ฅผ ์ ํด์ ๊ทธ๊ฒ ๋จผ์ ๊ณ์ฐํด์ฃผ๋ฉด ๋๋ค.
- ๊ณ์ฐ๋ ์์๋ ์์๋ก ๋ฐ๊พธ์ด์ ์ต๋๊ฐ ๊ณ์ฐ์ ํ๋ค.
๐ฅ ์์ค ์ฝ๋
from itertools import permutations as pt
def solution(expression):
answer = -1e9
op, nums = [], []
a, b = -1, -1
new_ex = []
for i in range(len(expression)):
if expression[i].isnumeric():
if a < 0:
a = i
else:
b = i
else:
if b < 0:
b = a
op.append(expression[i])
nums.append((a, b))
new_ex.append(int(expression[a:b+1]))
new_ex.append(expression[i])
a, b = -1, -1
if b > -1:
new_ex.append(int(expression[a:b+1]))
else:
new_ex.append(int(expression[a]))
k = list(set(op))
for case in list(set(pt(k, len(k)))):
temp_new_ex = new_ex[:]
for j in case:
while j in temp_new_ex:
idx = temp_new_ex.index(j)
if j == '*':
temp = temp_new_ex[idx - 1] * temp_new_ex[idx + 1]
elif j == '-':
temp = temp_new_ex[idx - 1] - temp_new_ex[idx + 1]
else:
temp = temp_new_ex[idx - 1] + temp_new_ex[idx + 1]
temp_new_ex = temp_new_ex[:idx - 1] + [temp] + temp_new_ex[idx + 2:]
answer = max(answer, abs(temp_new_ex[0]))
return answer
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
expression = "100-200*300-500+20"
expression = "50*6-3*2"
์คํ๊ฒฐ๊ณผ
60420
300
โจ๏ธ ๋ฌธ์ ํ์ด
- ๋ต์ผ๋ก ๋ฐํํ
answer
๋ฅผ -1e9
๋ก ์ด๊ธฐํํ๋ค.
- ์
๋ ฅ๋ฐ์
expression
์ ์ ๋ณด๋ฅผ ๋ด์ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ ,
๋ฌธ์์ด์์ ์ฐ์ฐ์๋ฅผ ๊ตฌ๋ถํ ๋ค ์ซ์๋ ์ ์ํ ๋ณ์๋ก ๋ณํ์์ผ ๊ฐ๊ฐ ๋ฆฌ์คํธ์ ๋ด๋๋ค.
- ์ฐ์ฐ์์ ์ฐ์ ์์๋
itertools
์ permutaions
๋ฅผ ์ฌ์ฉํด ์์ด์ ๋ง๋ ํ
set()์ ํตํด ์์ด์ ์ค๋ณต์ ์์ด๋ค.
- ๊ฐ ์์ด์ ํ๋์ฉ for ๋ฌธ์ผ๋ก ๊บผ๋ด๊ณ , ๊ทธ ์์ด์ ์์๋ฅผ ๋๋ฉฐ ์ต๋๊ฐ์ ๊ณ์ฐํ๋ค.
- ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋งค์ฐ ๊ธธ์ง ์์ ์
python ์ธ์ด์ list์ ๋ฌธ์์ด์ ์๋ index()
ํจ์๋ฅผ ์ฌ์ฉ.
- ๋ฆฌ์คํธ์
index()
ํจ์๋ ์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ๊ฐ์ฅ ์์ ์๋ ๊ฒ์ ๋ฐํ
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ฐ์ฐ์์ธ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ์์ ์๋ค๋ ์ ์ ๋ง์กฑํ๋ค
- ํด๋นํ๋ ์ธ๋ฑ์ค์ ์ฐ์ฐ์ ์ ๋ค์ ์ซ์๋ฅผ ์ฐ์ฐ์์ ๋ง๊ฒ ๊ณ์ฐ ํ,
๊ณ์ฐํ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์๋ฅผ ๋บ ์๋ฆฌ์ ๊ณ์ฐ๊ฐ์ ๋ฃ์
- ๋ฐ๋ณตํ์ฌ 1๊ฐ ๋จ์ ์์ ์ฆ, ์์์ ์ต์ข
๊ณ์ฐ๊ฐ์
answer
์ ๋น๊ตํด ํฐ ๊ฐ์ผ๋ก ๊ต์ฒดํด์ฃผ๋ฉด ๋๋ค.
๋ฎฌ๋ก ์์๋ abs()
ํจ์๋ฅผ ์ฌ์ฉํด ์์๋ก ๋ณ๊ฒฝํด์ฃผ์๋ค.
๐พ ๋๋์
- ์ ๊ทํํ์์ผ๋ก ์ฐ์ฐ์์ ํผ์ฐ์ฐ์๋ฅผ ๊ตฌ๋ถํ์ฌ ์ถ์ถํด์ ํ๋ฉด,
์๊ฐ๋ณต์ก๋๊ฐ ๋ ์ค ์๋ ์์ ๊ฒ ๊ฐ๋ค.
- ์ ๊ทํํ์์ ๋ ๊ณต๋ถํ๊ณ ์ฐ์ตํด๋ณด์์ผ๊ฒ ๋ค.
- ์ด๋ณด๋ค expression์ ๊ธธ์ด๊ฐ ๋ ๊ธธ์ด ์๊ฐ์ด๊ณผ๊ฐ ๋ ๋๋ ์ด๋ป๊ฒ ํ ๊ฒ์ธ์ง
์ฐ์ฐ์ ๋ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ด์ผ๊ฒ ๋ค.
- ๊ดํธ๋ฅผ ๋ฃ์ด eval() ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์๊ฐํด๋ณด์๋๋ฐ, ์คํ ์๋์์ ์๊ฐํด๋ณด๋
๊ทธ๋ฆฌ ์ข์ง ์์ ํ์ด ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ ์ฌ์ฉํ์ง ์์๋ค.