반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/67257
풀이
def solution(expression):
answer = 0
priorities = [
('*', '-', '+'),
('*', '+', '-'),
('+', '*', '-'),
('+', '-', '*'),
('-', '*', '+'),
('-', '+', '*')
]
for priority in priorities:
one = list(map(lambda x: list(map(lambda x : x.split(priority[2]),x.split(priority[1]))), expression.split(priority[0])))
for i in range(len(one)):
for j in range(len(one[i])):
one[i][j] = "(" + priority[2].join(one[i][j]) + ")"
one[i] = "(" + priority[1].join(one[i]) + ")"
one = "(" + priority[0].join(one) + ")"
if answer < abs(eval(one)):
answer = abs(eval(one))
return answer
- 6가지의 우선순위 후보를 직접만들고,
- 이를 하나씩 대입해 split해준다음,
- 이렇게 생성된 3차원 배열을 괄호형태로 묶어서 계산하는 방식을 선택했다.
eval
: 주어진 문자열을 수식으로보고 계산을 처리해준다.- 만약 eval함수를 사용할 수 없을 경우, 괄호를 처리할 수 있는 스택계산기를 만들어 사용해야할 것이다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 섬 연결하기 (프로그래머스 lv3, 파이썬) (0) | 2021.07.10 |
---|---|
[알고리즘 연습] 타겟 넘버 (프로그래머스 lv2, 파이썬) (0) | 2021.06.10 |
[알고리즘 연습] 더 맵게 (프로그래머스 lv2, 파이썬) (0) | 2021.06.09 |
[알고리즘 연습] 124나라의 숫자 (프로그래머스 lv2, 파이썬) (0) | 2021.06.09 |
[알고리즘 연습] 실패율 (프로그래머스 lv1, 파이썬) (0) | 2021.06.08 |