일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 매일11시
- 1182
- 최소공배수
- Kotlin
- expo
- Android
- 안드로이드
- 파이썬
- 코테
- 앱
- permutation
- 백준
- 나머지
- 11054
- lcm
- 11053
- Python
- 괄호
- 1260
- 11057
- 뒤로가기
- Combination
- 6603
- LCS
- 홈화면
- 순열
- 9095
- 11기
- itertools
- 코틀린
Archives
- Today
- Total
황소개발자
백준 16637 파이썬 python : 괄호 추가하기 @@황소처럼 우직하게@@ 요샌풀면 "이게 되네" 본문
반응형
짬밥이 늘어버린겨..
go 함수로 일단 lst 함수에 어떤 연산을 먼저할건지 정하고
stack 이용해서 우선연산 계싼처리
그후 한번 더 계싼처리
ans = 0 으로 초기화해서 살짝 반례찾았었네..
최소값은 -999999999
n = int(input())
given = input()
op = [0] * ((n - 1) // 2)
lst = []
def go(idx, flag, hist):
if idx == (n - 1) // 2:
lst.append(hist)
return
if flag:
go(idx + 1, False, hist + [0])
else:
go(idx + 1, True, hist + [1])
go(idx + 1, False, hist + [0])
go(0, False, [])
def cal(a, b, oper):
if oper == "*":
return a * b
elif oper == "+":
return a + b
elif oper == "-":
return a - b
ans = -999999999
for case in lst:
stack = []
i = 0
while i < n:
if i % 2 == 0: # number
stack.append(given[i])
else: # oper
if case[(i - 1) // 2]:
left = int(stack.pop())
right = int(given[i + 1])
stack.append(cal(left, right, given[i]))
i += 1
else:
stack.append(given[i])
i += 1
first = int(stack.pop(0))
for i in range(0, len(stack), 2):
first = cal(first, int(stack[i + 1]), stack[i])
ans = max(ans, first)
print(ans)
반응형
'백준 문제 풀이' 카테고리의 다른 글
백준 15686 파이썬 python : 치킨 배달 @@황소처럼 우직하게@@ 치킨 먹고싶어 (0) | 2020.04.23 |
---|---|
백준 17088 파이썬 python : 등차수열 변환 @@황소처럼 우직하게@@ 졸려뒤지것네 (0) | 2020.04.23 |
python permutations combinations 파이썬 순열 조합 itertools 모듈 사용. 사용법 정리. 문제점과 한계. 그리고 해결책 (0) | 2020.04.22 |
백준 16943 파이썬 python : 숫자 재배치 @@황소처럼 우직하게@@ permutations 사용해부려 (0) | 2020.04.22 |
백준 16938 파이썬 python : 캠프 준비 @@황소처럼 우직하게@@ 캠프가고 싶다 ㅠㅠ (0) | 2020.04.22 |
Comments