내용으로 건너뛰기
테페리넷
사용자 도구
등록
로그인
사이트 도구
검색
도구
문서 보기
Fold/unfold all
역링크
미디어 관리자
사이트맵
등록
로그인
>
미디어 관리자
사이트맵
현재 위치:
테페리넷
»
Problem Solving
»
문제
»
프로그래머스
»
문제제목
ps:problems:programmers:67257
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== 문제제목 ====== ===== 풀이 ===== * 세가지 연산자의 가능한 우선순위는 총 3!=6가지이다. 그냥 이 6가지 조합에 대해서 전부 식을 계산해보고 최댓값을 구하면 된다. * 식을 계산하는 것은 스택을 써서 정석적으로 구현할 수도 있지만, 식의 형태가 단순하기 때문에, 그냥 연산자를 갖고서 문자열을 split한 뒤에, 분할된 각 문자열들에 대해서 다시 재귀적으로 값을 계산하고 마지막에 합쳐주는 방법으로도 충분하다. * eval을 쓰면 더 간단하게도 구현 가능하지만 eval은 최대한 쓰지 않기로 했기 때문에 그 방법은 패스 ===== 코드 ===== <dkpr py> """Solution code for "Programmers 67257. 수식 최대화". - Problem link: https://programmers.co.kr/learn/courses/30/lessons/67257 - Solution link: http://www.teferi.net/ps/problems/programmers/67257 """ import functools import itertools import operator OPERATORS = (('*', operator.mul), ('+', operator.add), ('-', operator.sub)) def solve(expression, operators, i): if expression.isdigit(): return int(expression) symbol, op = operators[i] sub_expressions = expression.split(symbol) return functools.reduce( op, (solve(x, operators, i + 1) for x in sub_expressions)) def solution(expression): return max( abs(solve(expression, p, 0)) for p in itertools.permutations(OPERATORS)) </dkpr> {{tag>프로그래머스 ps:problems:programmers:Level_2}}
ps/problems/programmers/67257.txt
· 마지막으로 수정됨: 2022/01/10 04:51 저자
teferi
문서 도구
문서 보기
역링크
Fold/unfold all
맨 위로