3 ~ 4 레벨 문제가 라이브 코딩에서 한 단계씩 풀어서 설명해주시니 엄청 쉬운 문제로 느껴졌다. ㅠㅠ 코드만 보고 이해가 안간다고 포기하지 말고, 문제 규칙을 하나하나 쪼개서 정리해보는 연습을 해야겠다.
스터디 덕분에 코드 작성할 때 어떤 버릇이 있는지 알게 되었고 효율적인 코드를 작성하는데 아주 많은 도움이 되었다.👍🏻 5주라는 시간이 이렇게 빨리 지나가다니 아쉽다. (매주 라떼에 당첨되어서 더욱 더 아쉬운 ㅎㅎㅎ) 그동안 감사했습니다! 😘 얼른 취뽀해서 공덕역에서 커피 한잔 하러 가야 할텐데..🙏🏻
+메모리 관리에 대한 내용 :)
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42883
2주차 사전순 부분 문자열과 비슷한 유형의 문제여서 금방 풀었다 😎
다만 for문이 끝나고 나서 k가 0이 아닐 경우 숫자가 덜 지워 진 것 이므로 stack뒤의 숫자를 남은 k만큼 잘라 주어야 한다.
def solution(number, k):
stack = []
for num in number:
while stack and stack[-1] < num and k > 0:
stack.pop()
k -= 1
stack.append(num)
if k != 0:
stack = stack[:-k]
return ''.join(stack)
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/67258
from collections import Counter
def solution(gems):
gem_unique = len(set(gems))
gems_lenth = len(gems) - 1
answer = [[1, gems_lenth + 1]]
start, end = 0, 0
gem = Counter()
gem[gems[0]] = 1
while end <= gems_lenth:
while len(gem) == gem_unique:
gem[gems[start]] -= 1
if gem[gems[start]] == 0:
del gem[gems[start]]
answer.append([start + 1, end + 1])
start += 1
if len(gem) < gem_unique:
end += 1
if end > gems_lenth:
break
gem[gems[end]] += 1
answer.sort(key=lambda x: (x[1]-x[0], x[0]))
return answer[0]
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42861
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/49189
inf로 초기화from collections import deque
def solution(n, edge):
nodes = [[] for _ in range(n + 1)]
for a, b in edge:
nodes[a].append(b)
nodes[b].append(a)
distance = [int(1e9)] * (n + 1)
distance[1] = 0
q = deque([(1, 0)])
while q:
node, dist = q.popleft()
for next in nodes[node]:
if distance[next] > dist + 1:
q.append((next, dist + 1))
distance[next] = dist + 1
target = max(distance[1:])
return distance.count(target)