https://www.acmicpc.net/problem/16637
내 풀이:
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
32
33
34
35
36
37
38
|
N = int(input())
expression = input()
answer = -2 ** 31
if N == 1:
print(max(answer, int(expression)))
exit()
symbol = ["+", "-", "*"]
def add_parenthesis(index, expression_list):
global answer
if index == N:
for i, j in enumerate(expression_list):
if len(j) == 3:
expression_list[i] = str(eval(j))
result = expression_list[0]
for _ in range(1, len(expression_list), 2):
result = eval(str(result)+expression_list[_]+expression_list[_+1])
if answer < result:
answer = result
return
expression_list.append(expression[index])
add_parenthesis(index + 1, expression_list)
del expression_list[-1]
if expression_list[-1] in symbol and index + 3 <= N:
expression_list.append(expression[index:index+3])
add_parenthesis(index + 3, expression_list)
del expression_list[-1]
add_parenthesis(1, [expression[0]])
print(answer)
|
Python3, 60ms
이번 문제에서는 내장함수를 공부할 때 개인적으로 인상깊었던 eval() 함수를 사용했다. 괄호를 추가했다는 것을 구분하는 방법으로 리스트에 괄호로 싸인 (숫자+기호+숫자)를 한 번에 추가하는 것으로 처리하였다. 코딩을 하는 과정에서 에러가 많이 발생해 조금 해맸는데 그 이유는 eval() 함수로 출력되는 수의 타입이 int라는 사실을 몰랐기 때문이다. 만약 이전에 eval()을 사용해보았다면 코딩 과정에서 eval()의 결과값마다 str 처리를 해주어 문제를 빠르게 풀 수 있었을 것 같다.
파이썬으로 풀어보는 백준 17136번: 색종이 붙이기 (삼성 A형 기출 문제) (0) | 2020.01.27 |
---|---|
파이썬으로 풀어보는 백준 17135번: 캐슬 디펜스 (삼성 A형 기출 문제) (0) | 2020.01.27 |
파이썬으로 풀어보는 백준 17471번: 게리맨더링 (삼성 A형 기출 문제) (0) | 2020.01.23 |
파이썬으로 풀어보는 백준 17406번: 배열 돌리기 4 (삼성 A형 기출 문제) (0) | 2020.01.23 |
파이썬으로 풀어보는 SW Expert Academy 무선 충전 (삼성 A형 기출 문제) (0) | 2020.01.22 |
댓글 영역