반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- springboot
- docker
- 도커
- Python
- 자바
- 쿠버네티스
- 백엔드
- 카카오
- Java
- Spring
- 스프링
- Linux
- 파이썬
- 스프링부트
- 프로그래머스 #카카오 #IT #코딩테스트
- 운영체제
- Elasticsearch
- DPDK
- programmers
- Kakao
- 프로그래머스
- 리눅스
- 네트워크
- 코딩테스트
- IT
- 알고리즘
- 개발자
- 엘라스틱서치
- 캐시
- C
Archives
- Today
- Total
저고데
[프로그래머스]수식 최대화 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/67257
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 간단히 요약하면 다음과 같다.
+, -, *만으로 이루어진 문자열이 있다.
이 때, 연산자의 계산 우선순위를 다르게하여 구할 수 있는 절대값의 최대값을 반환해야한다.
코드를 작성하기 위한 순서는 다음과 같다.
1. 연산자의 모든 조합의 경우의 수를 만들기 위해서 permutations을 import해준다.
2. 주어진 expression이 int형이 아닌 str형이므로 이 자체를 계산하기 위해서 eval을 사용하여준다.
3. 각 조합의 순서대로 분리하고 join하여 eval하는 과정을 재귀 함수로 호출하여 계산해준다.
4. 모든 조합의 결과값을 반환하고 max를 사용하여 가장 큰 값을 반환해준다.
from itertools import permutations #1번
def calc(johap, n, expression):
if n==2:
return str(eval(expression)) #2번 : 연산자의 종류가 3개이기 때문에, n=2일 때까지만 재귀 호출을 해준다.
if johap[n]=='*':
res=eval('*'.join([calc(johap,n+1,e) for e in expression.split('*')])) #3번 : 해당 연산자를 기준으로 분리한 후 나머지를 계산해준다.
elif johap[n]=='+':
res=eval('+'.join([calc(johap,n+1,e) for e in expression.split('+')]))
elif johap[n]=='-':
res=eval('-'.join([calc(johap,n+1,e) for e in expression.split('-')]))
return str(res)
def solution(expression):
answer = 0
op=['+','-','*']
for i in permutations(op, 3):
answer=max(answer, abs(int(calc(i, 0, expression))))
return answer
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]성격 유형 검사하기 (0) | 2023.01.24 |
---|---|
[프로그래머스]괄호 변환 (0) | 2023.01.24 |
[프로그래머스]택시 합승 요금 (0) | 2023.01.23 |
[프로그래머스]다리를 지나는 트럭 (0) | 2023.01.23 |
[프로그래머스]큰 수 만들기 (1) | 2023.01.20 |