본문 바로가기

Pair5

[자료구조] 짝지어 제거하기 파이썬 (stack, valid pair) def solution(s): stack = [] for i in s: if len(stack) == 0: stack.append(i) elif stack[-1] == i: stack.pop() else: stack.append(i) return (0,1)[len(stack) == 0] 단순 stack 문제였는데 너무 복잡하게 생각했다 valid parentheses랑 똑같은 건데 ㅠㅠ 마지막 return에서 tuple로 한 부분은 if-else를 쓰는 대신에 간결하게 표현이 가능하다. 예전에 LeetCode에서 봤던 표현식 그 때는 왜 tuple로 쓰는지 몰랐는데 지금보니 간결하게 표현이 가능하고 또한 return 값으로 T/F 대신 1/0으로 받는 문제의 경우가 있기 때문인듯. 2021. 4. 22.
[자료구조] 스택 파이썬(LeetCode, Programmers) class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): return self.data.pop() def peek(self): return self.data[-1] def solution(expr): match = { ')': '(', '}': '{', ']': '[' } S = ArrayStack() for c in expr: if c in '({[': S.push(c) elif c in match: if S.size.. 2021. 4. 20.
[프로그래머스] 짝지어 제거하기 파이썬 (stack, pop) 다른 사람의 풀이 def solution(s): stack = [] stack.append(s[0]) for i in s: if len(stack) == 0: # 최초에 stack이 비었더라도 loop진행중 stack이 비워지면 다시 채워넣기 stack.append(i) elif stack[-1] == i: stack.pop() else: stack.append(i) if len(stack) == 0: return 1 pair 로 하는 문제는 괄호같은 경우도 그렇고 stack으로 pop [프로그래머스] 올바른 괄호 파이썬 ygseo.tistory.com/163 2021. 3. 16.
[프로그래머스] 올바른 괄호 파이썬 stack 비우기 다른사람의 풀이 def solution(s): answer = True stack = [] for i in s: if i == '(': stack.append('(') else: try: stack.pop() except: return False if len(stack) == 0: return True else: return False 출처: eda-ai-lab.tistory.com/478 2021. 3. 15.
[프로그래머스] 문자열 압축 파이썬 다른 사람의 풀이 def solution(s): length = [] result = "" if len(s) == 1: return 1 for cut in range(1, len(s) // 2 + 1): count = 1 tempStr = s[:cut] for i in range(cut, len(s), cut): if s[i:i+cut] == tempStr: count += 1 else: if count == 1: count = "" result += str(count) + tempStr tempStr = s[i:i+cut] count = 1 if count == 1: count = "" result += str(count) + tempStr length.append(len(result)) result .. 2021. 3. 3.