📖저자님의 책 소개 영상: https://www.youtube.com/watch?v=Q13Uj_5bH9M
▪️ 한 번 풀어보고, 시간 복잡도 계산해보기
▪️ 문제 주어진 시간 이내 해결 못 하면, 해설을 통해 해결.
단, 오답노트처럼 기록
👍 문제를 푸는데 <풀이 그림> 덕분에 이해가 쉽다. 완전!!
https://school.programmers.co.kr/learn/courses/30/lessons/76502
def solution(s):
answer = 0
n = len(s)
for i in range(n):
stack = []
for j in range(n):
c = s[(i+j) % n] # 인덱스 활용
if c == "(" or c == "{" or c == "[":
stack.append(c)
else:
if not stack:
break
if c == ")" and stack[-1] == "(":
stack.pop()
elif c == "]" and stack[-1] == "[":
stack.pop()
elif c == "}" and stack[-1] == "{":
stack.pop()
else:
break
else:
if not stack:
answer += 1
return answer
✅ 책 풀이 체크
https://school.programmers.co.kr/learn/courses/30/lessons/12973
def solution(s):
stack = []
for i in s:
if stack and stack[-1] == i:
stack.pop()
else:
stack.append(i)
return int(not stack) #비어 있으면 1, 안 비어 있으면 0
https://school.programmers.co.kr/learn/courses/30/lessons/42584
✅ 으로 푸는 방법
def solution(prices):
n = len(prices)
answer = [0] * n
stack = [0]
for i in range(1,n):
while stack and prices[i] < prices[stack[-1]]:
j = stack.pop()
answer[j] = i - j
stack.append(i)
while stack:
j = stack.pop()
answer[j] = n - 1 - j
return answer
⌛
https://school.programmers.co.kr/learn/courses/30/lessons/64061
https://school.programmers.co.kr/learn/courses/30/lessons/81303
✅ 문제 이해 ok, 어떻게 풀 것인가?
-> 세그먼트 트리 사용하면 으로 개선 가능함.
from collections import deque
def solution(N, K):
queue = deque(range(1, N+1))
while len(queue) > 1:
for _ in range(K-1):
queue.append(queue.popleft()) # 앞의 것을 뒤에 추가(한 칸 돌려돌려)
queue.popleft() #맨 앞 제거
return queue[0]
print(solution(5,2))
https://school.programmers.co.kr/learn/courses/30/lessons/42586
https://school.programmers.co.kr/learn/courses/30/lessons/159994