


코딩테스트 연습 - 수식 최대화 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드
from itertools import permutations
def solution(expression):
answer = 0
# 부호의 우선순위 경우의 수
expressioin_list = set()
for i in expression:
if i in ["-","+","*"]:
expressioin_list.add(i)
for i in permutations(expressioin_list,len(expressioin_list)):
# 부호와 분리해 새로운 리스트를 만들어 주자
new_expression = []
str = ""
for x in expression:
if x in ['-','+','*']:
new_expression.append(str)
new_expression.append(x)
str = ""
else:
str+=x
new_expression.append(str)
for j in i:
# 현재 우선순위가 '-' 인 경우
if j =='-':
while True:
if '-' not in new_expression:
break
for i in range(len(new_expression)):
if new_expression[i] == '-':
new_expression[i] = int(new_expression[i-1]) - int(new_expression[i+1])
new_expression.pop(i-1)
new_expression.pop(i)
break
# 현재 우선순위가 '+' 인 경우
if j =='+':
while True:
if '+' not in new_expression:
break
for i in range(len(new_expression)):
if new_expression[i] == '+':
new_expression[i] = int(new_expression[i-1]) + int(new_expression[i+1])
new_expression.pop(i-1)
new_expression.pop(i)
break
# 현재 우선순위가 '*' 인 경우
if j =='*':
while True:
if '*' not in new_expression:
break
for i in range(len(new_expression)):
if new_expression[i] == '*':
new_expression[i] = int(new_expression[i-1]) * int(new_expression[i+1])
new_expression.pop(i-1)
new_expression.pop(i)
break
#print(new_expression)
answer = max(answer, abs(int(new_expression[0])))
#print(answer)
return answer
solution("50*6-3*2")
'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글
| 호텔 대실 (0) | 2023.09.28 |
|---|---|
| 행렬 테두리 회전하기 (0) | 2023.09.27 |
| 전력망을 둘로 나누기 (0) | 2023.09.07 |
| 가장 큰 수 (0) | 2023.08.14 |
| [1차] 프렌즈4블록 (0) | 2023.08.11 |