diff --git a/alstjr7437/README.md b/alstjr7437/README.md
index f3af489..4b3dfca 100644
--- a/alstjr7437/README.md
+++ b/alstjr7437/README.md
@@ -17,3 +17,4 @@
| 13차시 | 2024.02.29 | DP | 쉬운 계단 수 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/42 |
| 14차시 | 2024.03.03 | 브루트포스 | 마인크래프트 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/48 |
| 15차시 | 2024.03.09 | 우선순위 큐 | 파일 합치기3 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/53 |
+| 16차시 | 2024.03.13 | 정렬 | 선 긋기 | https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/57 |
\ No newline at end of file
diff --git "a/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py" "b/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py"
new file mode 100644
index 0000000..01e1add
--- /dev/null
+++ "b/alstjr7437/\354\240\225\353\240\254/tempCodeRunnerFile.py"
@@ -0,0 +1,3 @@
+
+# dohwaji[i][0] += 1000000000
+# dohwaji[i][1] += 1000000000
\ No newline at end of file
diff --git "a/alstjr7437/\354\240\225\353\240\254/\354\204\240 \352\270\213\352\270\260.py" "b/alstjr7437/\354\240\225\353\240\254/\354\204\240 \352\270\213\352\270\260.py"
new file mode 100644
index 0000000..0bfd88f
--- /dev/null
+++ "b/alstjr7437/\354\240\225\353\240\254/\354\204\240 \352\270\213\352\270\260.py"
@@ -0,0 +1,27 @@
+import sys
+input = sys.stdin.readline
+
+n = int(input())
+dohwaji = [tuple(map(int,(input().split()))) for _ in range(n)]
+
+# for i in range(len(dohwaji)):
+# dohwaji[i][0] += 1000000000
+# dohwaji[i][1] += 1000000000
+
+dohwaji.sort()
+
+line = dohwaji[0][1]
+answer = dohwaji[0][1] - dohwaji[0][0]
+
+for left, right in dohwaji[1:]:
+ if right <= line:
+ continue
+ elif line < left:
+ answer += right - left
+ line = right
+ elif line >= left and right > line:
+ answer += right - line
+ line = right
+ # print(answer)
+
+print(answer)
\ No newline at end of file
diff --git a/fnzksxl/README.md b/fnzksxl/README.md
index 318734c..af1e272 100644
--- a/fnzksxl/README.md
+++ b/fnzksxl/README.md
@@ -13,4 +13,5 @@
| 9차시 | 2024-02-23 | 그래프 | [순위](https://school.programmers.co.kr/learn/courses/30/lessons/49191) | [#37](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/37) |
| 10차시 | 2024-03-07 | 구현 | [나무 재테크](https://www.acmicpc.net/problem/16235) | [#52](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/52) |
| 11차시 | 2024-03-10 | 투포인터 | [보석 쇼핑](https://school.programmers.co.kr/learn/courses/30/lessons/67258) | [#56](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/56) |
+| 12차시 | 2024-03-13 | 벨만포드 | [타임머신](https://www.acmicpc.net/problem/11657) | [#](https://github.com/AlgoLeadMe/AlgoLeadMe-6/pull/58) |
---
diff --git "a/fnzksxl/\353\262\250\353\247\214\355\217\254\353\223\234/\355\203\200\354\236\204\353\250\270\354\213\240.py" "b/fnzksxl/\353\262\250\353\247\214\355\217\254\353\223\234/\355\203\200\354\236\204\353\250\270\354\213\240.py"
new file mode 100644
index 0000000..7d2d39b
--- /dev/null
+++ "b/fnzksxl/\353\262\250\353\247\214\355\217\254\353\223\234/\355\203\200\354\236\204\353\250\270\354\213\240.py"
@@ -0,0 +1,38 @@
+import sys
+
+input = sys.stdin.readline
+
+
+def func():
+ distances[1] = 0
+
+ for i in range(N):
+ for j in range(M):
+ cur_node, next_node, weight = edges[j]
+ if distances[cur_node] != float('inf') and distances[next_node] > distances[cur_node] + weight:
+ distances[next_node] = distances[cur_node] + weight
+ if i == N-1:
+ return False
+
+ return True
+
+
+N, M = map(int, input().split())
+
+edges = []
+distances = [float('inf')] * (N+1)
+q = []
+
+for _ in range(M):
+ start, end, weight = map(int, input().split())
+ edges.append((start, end, weight))
+
+
+if func():
+ for weight in distances[2:]:
+ if weight == float('inf'):
+ print(-1)
+ else:
+ print(weight)
+else:
+ print(-1)
diff --git a/wkdghdwns199/README.md b/wkdghdwns199/README.md
index 294e4cb..10a813b 100644
--- a/wkdghdwns199/README.md
+++ b/wkdghdwns199/README.md
@@ -15,4 +15,7 @@
| 11차시 | 2024.03.03 | 스택, 큐, 덱 | 요세푸스 문제 0 | 2024.03.03 |
| 12차시 | 2024.03.06 | DP | 다리 놓기 | 2024.03.06 |
| 13차시 | 2024.03.09 | DP | 정수 삼각형 | 2024.03.09 |
-| 16차시 | 2024.03.23 | 조합론 | 이항 계수 1 | 2024.03.23 |
\ No newline at end of file
+| 14차시 | 2024.03.13 | 집합과 맵 | 영단어 암기는 괴로워 | 2024.03.13 |
+| 15차시 | 2024.03.20 | 우선순위 큐 | 절댓값 힙 | 2024.03.20 |
+| 16차시 | 2024.03.23 | 조합론 | 이항 계수 1 | 2024.03.23 |
+
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11657.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11657.py"
new file mode 100644
index 0000000..8c4218c
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11657.py"
@@ -0,0 +1,77 @@
+'''
+문제
+N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 버스가 M개 있다.
+각 버스는 A, B, C로 나타낼 수 있는데, A는 시작도시, B는 도착도시, C는 버스를 타고 이동하는데 걸리는 시간이다.
+시간 C가 양수가 아닌 경우가 있다. C = 0인 경우는 순간 이동을 하는 경우, C < 0인 경우는 타임머신으로 시간을 되돌아가는 경우이다.
+
+1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오.
+
+입력
+첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다.
+둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다.
+
+출력
+만약 1번 도시에서 출발해 어떤 도시로 가는 과정에서 시간을 무한히 오래 전으로 되돌릴 수 있다면 첫째 줄에 -1을 출력한다.
+그렇지 않다면 N-1개 줄에 걸쳐 각 줄에 1번 도시에서 출발해 2번 도시, 3번 도시, ..., N번 도시로 가는 가장 빠른 시간을 순서대로 출력한다.
+만약 해당 도시로 가는 경로가 없다면 대신 -1을 출력한다.
+
+예제 입력 1
+3 4
+1 2 4
+1 3 3
+2 3 -1
+3 1 -2
+예제 출력 1
+4
+3
+예제 입력 2
+3 4
+1 2 4
+1 3 3
+2 3 -4
+3 1 -2
+예제 출력 2
+-1
+예제 입력 3
+3 2
+1 2 4
+1 2 3
+예제 출력 3
+3
+-1
+
+'''
+
+import sys
+input = sys.stdin.readline
+INF = int(1e9)
+
+def bellman_ford(start):
+ dist[start] = 0
+
+ for i in range(1,n+1):
+ for j in range(m):
+ now, next, cost = edges[j][0], edges[j][1], edges[j][2]
+ if dist[now] != INF and dist[next] > dist[now] + cost:
+ dist[next] = dist[now] + cost
+ if i == n :
+ return True
+ return False
+
+n,m = map(int, input().split())
+edges = []
+dist = [INF] * (n+1)
+
+for _ in range(m):
+ a,b,c = map(int, input().split())
+ edges.append((a,b,c))
+
+negative_cycle = bellman_ford(1)
+if negative_cycle :
+ print(-1)
+else :
+ for i in range(2,n+1):
+ if dist[i] == INF:
+ print(-1)
+ else :
+ print(dist[i])
\ No newline at end of file
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11659.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11659.py"
new file mode 100644
index 0000000..e9af25e
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-11659.py"
@@ -0,0 +1,11 @@
+import sys
+input = sys.stdin.readline
+N,M = map(int, input().split())
+num_list = list(map(int, input().split()))
+accumulate_list = [0] * (N+1)
+for i in range(N):
+ accumulate_list[i+1] = accumulate_list[i] + num_list[i]
+
+for _ in range(M):
+ start, end = map(int, input().split())
+ print(accumulate_list[end] - accumulate_list[start-1])
\ No newline at end of file
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-13975.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-13975.py"
new file mode 100644
index 0000000..75d61b8
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-13975.py"
@@ -0,0 +1,17 @@
+import sys
+from heapq import *
+input = sys.stdin.readline
+T = int(input())
+for _ in range(T):
+ N = int(input())
+ chapters = list(map(int, input().split()))
+ time_list = []
+ min_time=0
+ for chapter in chapters :
+ heappush(time_list, chapter)
+ while len(time_list) > 1 :
+ temp =0
+ temp += heappop(time_list) + heappop(time_list)
+ heappush(time_list, temp)
+ min_time += temp
+ print(min_time)
\ No newline at end of file
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-14938.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-14938.py"
new file mode 100644
index 0000000..1185986
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-14938.py"
@@ -0,0 +1,42 @@
+import sys
+from heapq import *
+input = sys.stdin.readline
+
+def dijkstra(graph, start):
+ length = [float('inf') for _ in graph]
+ length[start] = 0
+ queue = []
+ heappush(queue, [length[start], start])
+
+ while queue:
+ current_length, current_target = heappop(queue)
+
+ if length[current_target] < current_length :
+ continue
+
+ for new_target, new_length in graph[current_target] :
+ len = current_length + new_length
+ if len < length[new_target]:
+ length[new_target] = len
+ heappush(queue, [len, new_target])
+ return length
+
+items = []
+N,M,R = map(int, input().split())
+T = list(map(int, input().split()))
+graph = [[] for _ in range(N+1)]
+
+for _ in range(R):
+ start, end, weight = map(int, input().split())
+ graph[start].append((end, weight))
+ graph[end].append((start, weight))
+
+for item in range(1, len(graph)) :
+ result = dijkstra(graph, item)
+ get = 0
+ for i in range(len(result)):
+ if result[i] <= M :
+ get += T[i-1]
+ items.append(get)
+
+print(max(items))
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-16235.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-16235.py"
new file mode 100644
index 0000000..2b59511
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-16235.py"
@@ -0,0 +1,49 @@
+import sys
+from collections import deque
+input = sys.stdin.readline
+
+dx = [-1,-1,-1,0,0,1,1,1]
+dy = [-1,0,1,-1,1,-1,0,1]
+
+N,M,K = map(int, input().split())
+A = [list(map(int, input().split())) for _ in range(N)]
+trees = [[deque() for _ in range(N)] for _ in range(N)]
+
+for _ in range(M) :
+ x,y,z = map(int, input().split())
+ trees[x-1][y-1].append(z)
+
+ground = [[5] * N for _ in range(N)]
+for _ in range(K) :
+
+ for i in range(N) :
+ for j in range(N):
+ trees_length = len(trees[i][j])
+ for k in range(trees_length) :
+ if ground[i][j] >= trees[i][j][k] :
+ ground[i][j] -= trees[i][j][k]
+ trees[i][j][k] += 1
+ else :
+ for _ in range(k,trees_length):
+ ground[i][j] += trees[i][j].pop() // 2
+ break
+
+ for i in range(N):
+ for j in range(N) :
+ for z in trees[i][j] :
+ if z % 5 == 0:
+ for idx in range(8):
+ move_x = i + dx[idx]
+ move_y = j + dy[idx]
+ if 0 <= move_x < N and 0 <= move_y < N :
+ trees[move_x][move_y].appendleft(1)
+ ground[i][j] += A[i][j]
+
+answer = 0
+for i in range(N) :
+ for j in range(N):
+ answer += len(trees[i][j])
+print(answer)
+
+
+
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-1629.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-1629.py"
new file mode 100644
index 0000000..709ed30
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-1629.py"
@@ -0,0 +1,12 @@
+import sys
+input = sys.stdin.readline
+
+def power(A,B,C):
+ if (B == 1) : return A%C
+ else :
+ temp = power(A,B//2, C)
+ if (B%2 == 0) : return temp * temp % C
+ else : return temp * temp * A % C
+
+A,B,C = map(int, input().split())
+print(power(A,B,C))
\ No newline at end of file
diff --git "a/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-2170.py" "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-2170.py"
new file mode 100644
index 0000000..d527e6e
--- /dev/null
+++ "b/wkdghdwns199/\353\246\254\353\267\260\355\222\200\354\235\264/ACM-2170.py"
@@ -0,0 +1,17 @@
+import sys
+input = sys.stdin.readline
+N = int(input())
+lines = [list(map(int, input().rstrip().split())) for _ in range(N)]
+lines.sort()
+
+length =0
+current_start = lines[0][0]
+current_end = lines[0][1]
+for start, end in lines[1:]:
+ if start > current_end :
+ print(start, current_end)
+ length += (current_end - current_start)
+ current_start = start
+ current_end = max(current_end, end)
+length += (current_end - current_start)
+print(length)
\ No newline at end of file
diff --git "a/wkdghdwns199/\354\232\260\354\204\240\354\210\234\354\234\204_\355\201\220/ACM-11286.py" "b/wkdghdwns199/\354\232\260\354\204\240\354\210\234\354\234\204_\355\201\220/ACM-11286.py"
new file mode 100644
index 0000000..8fe9372
--- /dev/null
+++ "b/wkdghdwns199/\354\232\260\354\204\240\354\210\234\354\234\204_\355\201\220/ACM-11286.py"
@@ -0,0 +1,24 @@
+import sys, heapq
+input =sys.stdin.readline
+min_heap = []
+max_heap = []
+N = int(input())
+for _ in range(N):
+ number = int(input())
+ if (number > 0) :
+ heapq.heappush(min_heap, number)
+ elif (number < 0) :
+ heapq.heappush(max_heap, -number)
+ else :
+ if min_heap :
+ if max_heap :
+ if min_heap[0] < max_heap[0] :
+ print(heapq.heappop(min_heap))
+ else :
+ print(-heapq.heappop(max_heap))
+ else :
+ print(heapq.heappop(min_heap))
+ elif max_heap :
+ print(-heapq.heappop(max_heap))
+ else :
+ print(0)
\ No newline at end of file
diff --git "a/wkdghdwns199/\354\247\221\355\225\251\352\263\274_\353\247\265/ACM-20902.py" "b/wkdghdwns199/\354\247\221\355\225\251\352\263\274_\353\247\265/ACM-20902.py"
new file mode 100644
index 0000000..b4ca7f1
--- /dev/null
+++ "b/wkdghdwns199/\354\247\221\355\225\251\352\263\274_\353\247\265/ACM-20902.py"
@@ -0,0 +1,20 @@
+import sys
+input = sys.stdin.readline
+N,M = map(int, input().split())
+word_count = {}
+for _ in range(N):
+ word = input().rstrip()
+ if len(word) >= M :
+ if word in word_count :
+ word_count[word][0] += 1
+ else :
+ word_count[word] = [1,len(word)]
+
+print()
+for key in word_count :
+ print (key)
+
+sorted_word_list = sorted(word_count, key=lambda key : (-word_count[key][0], -word_count[key][1], key))
+print()
+for word in sorted_word_list :
+ print(word)