diff --git a/LJEDD2/2024-2/README.md b/LJEDD2/2024-2/README.md
index a5e42eed..f93efc8c 100644
--- a/LJEDD2/2024-2/README.md
+++ b/LJEDD2/2024-2/README.md
@@ -6,4 +6,8 @@
| 2차시 | 2024.07.20 | 다이나믹프로그래밍 | N으로 표현 | [#2](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/126) |
| 3차시 | 2024.07.24 | 깊이/너비 우선 탐색(DFS/BFS) | 여행경로 | [#3](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/131) |
| 4차시 | 2024.07.27 | 그래프 | 가장 먼 노드 | [#4](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/133) |
----
\ No newline at end of file
+| 5차시 | 2024.07.31 | 다이나믹프로그래밍 | 정수 삼각형 | [#5](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/139) |
+| 6차시 | 2024.08.03 | 완전탐색 | 피로도 | [#6](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/141) |
+| 7차시 | 2024.09.01 | 위상정렬 | 줄 세우기 | [#7](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/152) |
+| 8차시 | 2024.09.04 | 위상정렬 | 문제집 | [#8](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/154) |
+| 9차시 | 2024.09.07 | 스택 | 원숭이 매달기 | [#9](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/156) |
\ No newline at end of file
diff --git "a/LJEDD2/2024-2/\353\213\244\354\235\264\353\202\230\353\257\271\355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\354\240\225\354\210\230 \354\202\274\352\260\201\355\230\225.py" "b/LJEDD2/2024-2/\353\213\244\354\235\264\353\202\230\353\257\271\355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\354\240\225\354\210\230 \354\202\274\352\260\201\355\230\225.py"
new file mode 100644
index 00000000..74c9f45b
--- /dev/null
+++ "b/LJEDD2/2024-2/\353\213\244\354\235\264\353\202\230\353\257\271\355\224\204\353\241\234\352\267\270\353\236\230\353\260\215/\354\240\225\354\210\230 \354\202\274\352\260\201\355\230\225.py"
@@ -0,0 +1,13 @@
+def solution(triangle):
+ for row in range(1, len(triangle)):
+ for col in range(row + 1):
+ if col == 0:
+ triangle[row][col] += triangle[row-1][col] # 바로 위 행 같은 열
+ elif col == row:
+ triangle[row][col] += triangle[row-1][col-1] # 바로 위 행의 왼쪽 열
+ else:
+ right, left = triangle[row-1][col], triangle[row-1][col-1]
+ triangle[row][col] += max(right, left) # 두 값 중 더 큰 값
+
+ answer = max(triangle[-1])
+ return answer
\ No newline at end of file
diff --git "a/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py" "b/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py"
new file mode 100644
index 00000000..4fd77b0c
--- /dev/null
+++ "b/LJEDD2/2024-2/\354\212\244\355\203\235/\354\233\220\354\210\255\354\235\264 \353\247\244\353\213\254\352\270\260.py"
@@ -0,0 +1,37 @@
+# 더 간단한 풀이 ... (문자열)
+import sys
+input = sys.stdin.readline
+
+for _ in range(int(input())):
+ cnt = 0
+ s = input().rstrip()
+ while "[]" in s:
+ s = s.replace("[]", "")
+ cnt += 1
+
+ print(2**cnt)
+
+
+
+# import sys
+
+# input = sys.stdin.readline
+
+# for _ in range(int(input())):
+# s = input().rstrip() # 괄호 문자열
+
+# max_depth = 0 # 최대 깊이를 저장할 변수
+# tree = list() # 현재 열린 괄호를 저장할 스택임
+
+# for i in s:
+# # 여는 괄호일 경우 스택에 열린 괄호 추가
+# if i == '[':
+# tree.append('[')
+# continue
+# # 닫는 괄호일 경우
+# max_depth = max(len(tree), max_depth)
+# # 현재 깊이와 최대 깊이 중 큰 값을 저장하고
+# tree.pop() # 마지막 열린 괄호를 제거
+
+# print(2 ** max_depth) # 쌍을 이룰때 가지 생성, 가지2-.1개씩 나눠가짐
+# # 결국엔 2의 depth승
\ No newline at end of file
diff --git "a/LJEDD2/2024-2/\354\231\204\354\240\204\355\203\220\354\203\211/\355\224\274\353\241\234\353\217\204..py" "b/LJEDD2/2024-2/\354\231\204\354\240\204\355\203\220\354\203\211/\355\224\274\353\241\234\353\217\204..py"
new file mode 100644
index 00000000..da273b4f
--- /dev/null
+++ "b/LJEDD2/2024-2/\354\231\204\354\240\204\355\203\220\354\203\211/\355\224\274\353\241\234\353\217\204..py"
@@ -0,0 +1,49 @@
+# 첫 번째 코드
+def solution(k, dungeons):
+
+ def DFS(k, cnt):
+ nonlocal answer
+
+ answer = max(answer, cnt)
+ for i in range(len(dungeons)):
+ # 던전 = ["최소 필요 피로도", "소모 피로도"]
+ min_fatigue, use_fatigue = dungeons[i][0], dungeons[i][1]
+
+ # 현재 피로도가 해당 던전을 방문하기 위한 최소 피로도보다 클 때
+ if not visited[i] and k >= min_fatigue:
+ visited[i] = True
+
+ # 백트래킹 : 이전 노드로 다시 back할 때,
+ # 해당 노드를 방문하기 전의 피로도로 다시 복구
+ DFS(k-use_fatigue, cnt+1)
+ visited[i] = False
+
+ answer = 0
+ visited = [False] * len(dungeons) # visited
+ DFS(k, 0)
+
+ return answer
+
+
+# 개선된 코드
+def solution(k, dungeons):
+ def dfs(k, cnt):
+ # 함수 내부에서 값을 갱신할 수 있는 비전역 변수로 선언
+ nonlocal answer
+
+ answer = max(answer, cnt)
+
+ # enumerate()를 활용하여 각 던전의 인덱스와 값을 동시에 반복
+ for i, (min_fatigue, use_fatigue) in enumerate(dungeons):
+
+ if not visited[i] and k >= min_fatigue:
+
+ visited[i] = True
+ dfs(k - use_fatigue, cnt + 1)
+ visited[i] = False
+
+ answer = 0
+ visited = [False] * len(dungeons)
+ dfs(k, 0)
+
+ return answer
\ No newline at end of file
diff --git "a/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\353\254\270\354\240\234\354\247\221.py" "b/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\353\254\270\354\240\234\354\247\221.py"
new file mode 100644
index 00000000..8398f5c4
--- /dev/null
+++ "b/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\353\254\270\354\240\234\354\247\221.py"
@@ -0,0 +1,33 @@
+# BOJ1766 문제집
+# 위상정렬 + 우선순위 큐
+
+import heapq
+
+n, m = map(int, input().split())
+graph = [[] for _ in range(n + 1)]
+indegree = [0] * (n + 1) # 진입 차수 리스트
+
+for i in range(m):
+ s, e = map(int, input().split())
+ graph[s].append(e)
+ indegree[e] += 1 # 진입 차수 데이터 저장
+
+# 문제에서 가능한 앞 번호의 문제부터 풀어야 함 -> 우선순위큐,,?
+# 1~N의 난이도 순 대로
+
+queue = []
+
+# 순서
+for i in range(1, n + 1):
+ if indegree[i] == 0:
+ heapq.heappush(queue, i) # 진입차수가 0인거 먼저 난이도랑 저장
+
+while queue:
+ now = heapq.heappop(queue)
+ print(now, end=' ')
+
+ for i in graph[now]: # 위상 정렬 수행 , 진입 차수 없애!
+ indegree[i] -= 1
+
+ if indegree[i] == 0:
+ heapq.heappush(queue, i)
\ No newline at end of file
diff --git "a/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\354\244\204 \354\204\270\354\232\260\352\270\260.py" "b/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\354\244\204 \354\204\270\354\232\260\352\270\260.py"
new file mode 100644
index 00000000..cd748053
--- /dev/null
+++ "b/LJEDD2/2024-2/\354\234\204\354\203\201\354\240\225\353\240\254/\354\244\204 \354\204\270\354\232\260\352\270\260.py"
@@ -0,0 +1,28 @@
+# BOJ2252 줄 세우기
+from collections import deque
+
+n, m = map(int, input().split())
+graph = [[] for _ in range(n + 1)]
+indegree = [0] * (n + 1) # 진입 차수 저장할 리스트
+
+for i in range(m):
+ s,e = map(int, input().split())
+ graph[s].append(e) # zz
+ indegree[e] += 1 # 진입 차수 데이터를 저장
+
+# B를 하기 위해 A라는 작업을 먼저 해야 하는 구조가 있을 때,
+# 그 작업 순서를 구해주는 것 = 위상정렬
+
+queue = deque()
+for i in range(1, n + 1):
+ if not indegree[i]:
+ queue.append(i)
+
+while queue: # 위상 정렬 수행 , 진입 차수 없애!
+ now = queue.popleft()
+ print(now, end=' ')
+
+ for next in graph[now]:
+ indegree[next] -= 1 # 진입 차수 0인 정점 큐에 삽입
+ if not indegree[next]:
+ queue.append(next)
\ No newline at end of file