O(N log N)
※ 병합 정렬 (merge sort), 힙 정렬(heap sort)과 동일
# 문자열 길이 순으로 정렬
sorted(L,key = lambda x : len(x) )
# 특정 key값으로 정렬
L = [ {'k' : 1} , {'k' : 2 } ]
L.sort(key = lambda x : x['k'] )
항상 종결 조건(Trivial case) 중요(★)
ex) 사탕 담기
# m = 총 담을 수 있는 크기, weight 각 캔디 무게
def candy(m, weights):
# 종결 조건
if m < 0 or len(weights) == 0 :
return 0
if m == 0 :
return 1
# 캔디 중 지금 제일 앞에 있는 캔디를 담는 경우 + 안 담는 경우
return candy(m-weight[0], weights[1:]) + candy(m, weights[1:])
top = stack.peek()
def splitTokens(exprStr):
tokens = []
val = 0
valProcessing = False
for c in exprStr:
if c == ' ':
continue
if c in '0123456789':
val = val * 10 + int(c)
valProcessing = True
else:
if valProcessing:
tokens.append(val)
val = 0
valProcessing = False
tokens.append(c)
if valProcessing:
tokens.append(val)
return tokens
# eval() = 문자열이 식으로 들어오면 결과를 반환
# print( eval("1+2") ) -> 3
# ex) 올바른 괄호 True or False
def solution(s):
match = {
')' : '(',
']' : '[',
'}' : '{'
}
stack = []
for c in s :
if c in '([{' :
stack.append(c)
else:
if len(stack) == 0:
return False
temp = stack.pop()
if temp != match[c] :
return False
return len(stack) == 0