1. ๋ฌธ์ ์ค๋ช
๋ฌธ์ ๋งํฌ
- input : ์์
- return : ์ฐ์ฐ์์ ์ฐ์ ์์๋ฅผ ์ค๋ณต๋์ง ์๋๋ก ์์๋ก ์ ์ ํ์ฌ ๊ณ์ฐํ๋ ๊ฒฝ์ฐ์ ์ ์ค์์ ์ต๋๊ฐ ์ถ๋ ฅ
2. ์ฝ๋
import re
from itertools import permutations
def solution(expression):
operator = [x for x in ['*','+','-'] if x in expression]
operators = [list(y) for y in permutations(operator)]
expression = re.split(r'(\D)',expression) #(\D): ์ซ์๊ฐ ์๋๊ฒ ๊ธฐ์ค์ผ๋ก split
answer = []
for operator in operators:
ex_copy = expression #๋ณต์ฌ
for op in operator:
while op in ex_copy: #๋ถํธ๊ฐ ์กด์ฌํ๋ ๋์ ๋ฐ๋ณต
i = ex_copy.index(op) #์ฐ์ฐ์๊ฐ ์กด์ฌํ๋ ๊ณณ์ ์ธ๋ฑ์ค
#์ฐ์ฐ์ ๋ฐ๋ก ์ ์๋ฆฌ์ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅ
ex_copy[i-1] = str(eval(ex_copy[i-1] + ex_copy[i] + ex_copy[i+1]))
ex_copy = ex_copy[:i] + ex_copy[i+2:] #์ด๋ฏธ ๊ณ์ฐํ ๋ถ๋ถ ์ ๊ฑฐ
answer.append(ex_copy[0])
return max(abs(int(x)) for x in answer)
3. ํ๊ณ
- str to list๋ฅผ ์งํํ ๋, ํน์ ๊ท์น์ ๊ทธ๋ฃนํํ๊ธฐ
- expression = re.split(r'(\D)',expression)
- '[]' : ๊ดํธ ์์ ๋ฌธ์๋ค์ ํ๋ํ๋์ฉ ์ธ์ํจ. '[abcd]' ๋ผ๋๊ฒ ์์ผ๋ฉด, a ํน์ b ํน์ c ํน์ d ๋ก ์ธ์๋จ.
- '()' : ํน์๋ฌธ์ ์์ ์๋ ๊ธ์๋ฅผ ํ๋์ ๋ฉ์ด๋ฆฌ๋ก ์ธ์ํจ. a ํน์ b ํน์ c ํน์ d ๋ก ์ธ์๋๊ฒ ํ๋ ค๋ฉด, (a|b|c|d) ์ด๋ฐ์์ผ๋ก ์์ฑ์ ํด์ผํจ
- ์ฒ์์๋ [์ซ์๊ทธ๋ฃน][๋ถํธ๊ทธ๋ฃน] ์ด๋ ๊ฒ ๋๋๋ ค๋ค๊ฐ ์๊พธ ํ ์๋ฆฌ ์ซ์๋ฅผ ์ซ์ ํ๋๋ก ๋ณด๋ ์๋ฌ๊ฐ ๋ฌ์๋ค. ๋ด๊ฐ ์ํ๋ ๊ฑด ์ฌ๋ฌ์ซ์๋ค์ ์ซ์ ํ๋๋ก ๋ณด๋ ๊ฒ์ด์๋๋ฐ, ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์ ๋๋, ์ซ์๊ฐ ์๋ ๊ฒ์ ๊ธฐ์ค'(\D)'์ผ๋ก splitํด์ผํ๋ค.
- ex_copy์์ ์ด๋ฏธ ๊ณ์ฐํ ๋ถ๋ถ ์ ๊ฑฐํ๊ธฐ
- ex_copy = ex_copy[:i] + ex_copy[i+2:]
- i-1,i,i+1 ์ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ ex_copy[i-1]์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฃ์ด์ฃผ์์ผ๋, i์,i+1๋ฒ์งธ ์์๋ค์ ์ง์์ผ ํ๋ค.
- ๊ณ์ฐํ ๋ถ๋ถ์ ์ ๊ฑฐํ ๋๋ del๋ฅผ ์จ์ ํน์ ์ธ๋ฑ์ค๋ฅผ ์ง์์ฃผ๋ ๊ฒ๋ณด๋ค ํ์ํ ๋ถ๋ถ๋ง ์๋ผ์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
- ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ
- ์์ ๋ณต์ฌ:a ๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ b = a ์ ๊ฐ์ด ํ ๋นํ๋ฉด ์ด๋ a ๊ฐ์ฒด๊ฐ ํต์งธ๋ก b ๋ก ๋ณต์ฌ๋๋ ๊ฒ์ด ์๋๋ค. ๋จ์ง b ๋ํ a ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ๋ง ํ ๋ฟ. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ด a ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐ๊พธ๋ฉด b ์ ์ฒซ๋ฒ์งธ ๊ฐ๋ ๊ฐ์ ๊ฒ์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋์ด ์๋ค.
- ๊น์ ๋ณต์ฌ: ๊ฐ์ฒด๋ฅผ ์์ ํ๊ฒ ๋ณต์ฌ
- ๋ฆฌ์คํธ์ผ ๊ฒฝ์ฐ, b = a[:] ์ฌ์ฉ
- ๋ฆฌ์คํธ๊ฐ ์๋ ๊ฒฝ์ฐ๋ copy ๋ชจ๋ ์ฌ์ฉ: (import copy, b = copy.deepcopy(a))
4. ์ฐธ๊ณ
https://velog.io/@cyanred9/SQL-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D%EC%9D%98-%EC%86%8C%EA%B4%84%ED%98%B8-%EB%8C%80%EA%B4%84%ED%98%B8-%EC%B0%A8%EC%9D%B4
http://cloudrain21.com/python-functions-to-memorize-1