tree;
+ while (cin >> num) {
+ tree.push_back(num);
+ }
+
+ //연산 + 출력
+ postOrder(0, tree.size() - 1, tree);
+}
\ No newline at end of file
diff --git "a/12_\355\212\270\353\246\254/\355\225\204\354\210\230/\355\214\214\354\235\274\354\227\205\353\241\234\353\223\234\354\232\251" "b/12_\355\212\270\353\246\254/\355\225\204\354\210\230/\355\214\214\354\235\274\354\227\205\353\241\234\353\223\234\354\232\251"
deleted file mode 100644
index e69de29b..00000000
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/README.md" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/README.md"
index e69de29b..15566a15 100644
--- "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/README.md"
+++ "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/README.md"
@@ -0,0 +1,76 @@
+# 최단 경로 (Shortest Path)
+
+[메인으로 돌아가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4)
+
+## 💻 튜터링
+
+### 라이브 코딩
+
+| 문제 번호 | 문제 이름 | 난이도 | 풀이 링크 | 분류 |
+| :-----------------------------------------------------------------------: | :----------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :----------: | :--------: |
+| 1753 | 최단경로 | | [바로가기]() | 다익스트라 |
+| 11404 | 플로이드 | | [바로가기]() | 플로이드-워셜 |
+| 11657 | 타임머신 | | [바로가기]() | 벨만-포드 |
+
+## ✏️ 과제
+
+### 마감기한
+
+~ 5 / 30 (화) 18:59 - 과제 제출
+~ 6 / 1 (목) 23:59 - 추가 제출
+
+### 필수
+
+| 문제 번호 | 문제 이름 | 난이도 | 풀이 링크 | 분류 |
+| :-----------------------------------------------------------------------: | :------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :-------: | :------------------------: |
+| 15685 | 드래곤 커브 | | [C++]() | 구현, 시뮬레이션 |
+| 1238 | 파티 | | [C++]() | 다익스트라 |
+| 2458 | 키 순서 | | [C++]() | 플로이드-워셜 |
+
+### 도전
+
+| 문제 번호 | 문제 이름 | 난이도 | 풀이 링크 | 분류 |
+| :--------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :-------: | :--: |
+| 프로그래머스 | 합승 택시 요금 | **Lv.3** | [C++]() | 플로이드-워셜 |
+| 1865 | 웜홀 | | [C++]() | 벨만-포드 |
+---
+
+### 힌트
+
+
+드래곤 커브
+
+ 뱀의 머리와 꼬리에 변화가 생기고 있네요! 어떤 자료구조가 필요할까요? 뱀의 현재 위치를 직접 나타내보는 것도 좋을 것 같네요.
+
+
+
+
+파티
+
+ 이제 어떤 지점을 가기만 하는 게 아니라 오기도 해야 하니 다익스트라 알고리즘을 여러 번 사용해야겠습니다!
+
+
+
+
+키 순서
+
+ 두 사람 사이의 키 순위를 비교해볼까요? 나와 상대방과의 키 순위를 안다는 것은 내가 상대방과의 키 우열을 알거나 상대방이 나와의 키 우열을 안다는 것과 같습니다.
+
+
+
+
+합승 택시 요금
+
+ 함께 합승할 수 있는 지점은 총 몇 개인가요? 계산에 고려해야 할 가능한 시작, 도착 지점의 쌍이 어떻게 될까요?
+
+
+
+
+웜홀
+
+ 시간이 뒤로 갈 수 있다네요? 음수 가중치일때 사용할 수 있는 알고리즘을 배웠었죠! 것보다 벨만 포드는 분명 출발점이 특정한 한 점일때 가능한 알고리즘이라고 배웠는데,시작지점이 정해져있지 않네요. 그런데 특정 정점 하나만 확인하면 해당 정점과 단절된 노드가 포함된 음수 사이클을 발견할 수 없죠! 우리는 최단거리에는 관심이 없고, 오로지 음수 사이클의 존재 여부만 확인하고 싶은 상황에서 어떻게 하면 될까요?
+
+
+
+
+---
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\353\254\270\354\240\234\355\225\264\354\204\244.pdf" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\353\254\270\354\240\234\355\225\264\354\204\244.pdf"
new file mode 100644
index 00000000..748ad33b
Binary files /dev/null and "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\353\254\270\354\240\234\355\225\264\354\204\244.pdf" differ
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\354\235\264\353\241\240.pdf" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\354\235\264\353\241\240.pdf"
new file mode 100644
index 00000000..c55739f9
Binary files /dev/null and "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/13_\354\265\234\353\213\250\352\262\275\353\241\234_\354\235\264\353\241\240.pdf" differ
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/\355\214\214\354\235\274\354\227\205\353\241\234\353\223\234\354\232\251" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\352\260\225\354\235\230 \354\236\220\353\243\214/\355\214\214\354\235\274\354\227\205\353\241\234\353\223\234\354\232\251"
deleted file mode 100644
index e69de29b..00000000
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_1238.cpp" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_1238.cpp"
new file mode 100644
index 00000000..0a9333e5
--- /dev/null
+++ "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_1238.cpp"
@@ -0,0 +1,63 @@
+#include
+#include
+#include
+#include
+using namespace std;
+typedef pair ci;
+const int INF = 1e5; // V * (가중치의 최대값)
+// X번 마을에 왕복하는 데 가장 오래 걸리는 학생의 시간 출력
+
+// 다익스트라
+vector dijkstra(int start, int v, vector>& graph) {
+ vector dist(v + 1, INF); // 각 정점까지의 최단 경로 저장
+ priority_queue, greater> pq; // first: 시작점으로부터의 거리, second: 정점
+
+ // 시작 정점 초기화
+ dist[start] = 0;
+ pq.push({ 0, start });
+ while (!pq.empty()) {
+ int weight = pq.top().first; // 현재 정점까지의 경로값
+ int node = pq.top().second; // 현재 탐색하려는 정점
+ pq.pop();
+
+ if (weight > dist[node]) { // 이미 더 작은 값으로 기록된 정점
+ continue;
+ }
+ for (int i = 0; i < graph[node].size(); i++) {
+ int next_node = graph[node][i].first; // 연결된 정점
+ // 시작점으로부터 현재 node를 거쳐 다음 정점까지 가는 경로값
+ int next_weight = weight + graph[node][i].second;
+ if (next_weight < dist[next_node]) { // 최단 경로 값이 갱신된다면
+ dist[next_node] = next_weight;
+ pq.push({ next_weight, next_node });
+ }
+ }
+ }
+ return dist;
+}
+
+int main() {
+ ios_base::sync_with_stdio(false);
+ cin.tie(NULL), cout.tie(NULL);
+
+ int N, M, X; // 학생 수, 단방향 도로 수, 모이는 마을 번호
+ int start, end, T; // 시작점, 끝점, 소요시간 (=가중치)
+ cin >> N >> M >> X;
+ vector> graph(N + 1, vector(0));
+
+ while (M--) {
+ cin >> start >> end >> T;
+ graph[start].push_back({ end, T });
+ }
+ vector dist_X = dijkstra(X, N, graph); // ( X -> 모든 정점) 최단 시간 저장
+
+ int max_time = 0; // 최대 소요시간 초기화
+ for (int i = 1; i <= N; i++) {
+ if (i == X) continue; // 모이는 마을은 제외
+ vector dist_i = dijkstra(i, N, graph); // (학생 위치 i -> X) 최단 시간
+ max_time = max(max_time, dist_X[i] + dist_i[X]);
+ // 왕복 시간 = ( X -> 학생 위치 i ) + ( 학생 위치 i -> X )
+ }
+ cout << max_time;
+ return 0;
+}
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_15685.cpp" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_15685.cpp"
new file mode 100644
index 00000000..6428e0ad
--- /dev/null
+++ "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_15685.cpp"
@@ -0,0 +1,76 @@
+#include // 입출력을 위한 헤더
+#include // 벡터 객체를 사용하기 위한 헤더
+
+using namespace std;
+
+const int SIZE = 100; // 100 x 100 격자이므로 size를 100으로 선언
+
+// 방향: 우(0), 상(1), 좌(2), 하(3)
+int dy[4] = { 0, -1, 0, 1 };
+int dx[4] = { 1, 0, -1, 0 };
+
+// 1x1 정사각형 개수 계산
+int cntSquares(vector>& plane) { // 격자 인자로 받음
+ int ans = 0; // 개수 0으로 초기화
+ for (int i = 0; i < SIZE; i++) { // 행
+ for (int j = 0; j < SIZE; j++) { //열 탐색
+ if (plane[i][j] && plane[i + 1][j] && plane[i][j + 1] && plane[i + 1][j + 1]) {
+ // 1x1 정사각형의 네 꼭짓점이 모두 true면
+ ans++; // 개수 증가
+ }
+ }
+ }
+ return ans; // 최종 개수 반환
+}
+
+// 평면에 드래곤 커브를 표시
+void drawDragonCurve(vector>& plane, int x, int y, int d, int g) {
+ // 격자, 시작 x,y 좌표와 시작 방향, 세대를 인자로 받음
+ vector direct; // 방향 저장
+ plane[y][x] = plane[y + dy[d]][x + dx[d]] = true; // 평면에 표시 (초기화)
+ x += dx[d]; // 이동한 x좌표 위치
+ y += dy[d]; // 이동한 y좌표 위치
+ direct.push_back(d); // 방향을 저장하는 벡터에 입력받은 방향 저장
+
+ while (g--) { // 1 ~ g 세대동안 반복
+ int size_d = direct.size(); // 현재까지 저장된 방향의 개수 저장
+ for (int j = size_d - 1; j >= 0; j--) { // 방향 계산 (벡터 뒤에서부터)
+ int next_d = (direct[j] + 1) % 4; // 다음 방향 계산
+ // -> 세대가 증가하면서 방향이 반시계로 변경되기 때문
+ x += dx[next_d]; // 이동한 x좌표 위치 갱신
+ y += dy[next_d]; // 이동한 y좌표 위치 갱신
+ plane[y][x] = true; // 평면에 표시
+ direct.push_back(next_d); // 다음 방향을 벡터에 저장
+ }
+ }
+}
+
+/*
+* 규칙
+* 0 세대: 0
+* 1 세대: 0 1
+* 2 세대: 0 1 2 1
+* 3 세대: 0 1 2 1 2 3 2 1
+* ...
+* N 세대: concat((N-1세대), ((N-1세대 거꾸로) + 1)%4)
+* 평면(좌측 상단이 (0, 0))에 드래곤 커브를 그린 후 정사각형의 개수를 계산
+* 드래곤 커브는 평면 밖으로 나가지 않음으로 범위를 확인할 필요 없음
+* 1. 0 세대의 드래곤 커브를 먼저 저장 (초기 조건)
+* 2. 세대를 거듭하면서 드래곤 커브를 그림 (규칙을 파악하는 것이 중요)
+* 3. 드래곤 커브가 그려진 평면 상의 정사각형의 개수 계산 (네 꼭짓점 확인)
+*/
+
+int main() // 제일 먼저 실행되는 main 함수
+{
+ int n, x, y, d, g; // 드래곤 커브 개수, 드래곤 커브 시작 점, 시작 방향, 세대
+ vector> plane(SIZE + 1, vector(SIZE + 1, false)); // 평면
+ // 입력
+ cin >> n; // 드래곤 커브 개수 입력
+ // 연산 & 출력
+ while (n--) { // n개의 드래곤 커브 그리기
+ cin >> x >> y >> d >> g; // 커브 시작 x좌표, y좌표, 시작 방향, 세대 입력
+ drawDragonCurve(plane, x, y, d, g); // 평면에 드래곤 커브 표시한 후
+ }
+ cout << cntSquares(plane) << '\n'; // 네 꼭짓점이 모두 드래곤 커브인 개수 출력
+ return 0; // main 함수 종료
+}
\ No newline at end of file
diff --git "a/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_2458.cpp" "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_2458.cpp"
new file mode 100644
index 00000000..149fdd18
--- /dev/null
+++ "b/13_\354\265\234\353\213\250 \352\262\275\353\241\234/\355\225\204\354\210\230/BOJ_2458.cpp"
@@ -0,0 +1,56 @@
+#include
+#include
+#include
+using namespace std;
+const int INF = 1e9;
+// 자신의 키가 몇 번째인지 알 수 있는 학생 수 출력
+// 두 학생 사이에 간선 존재 O -> 비교 가능 == 몇 번째인지 알 수 있음
+// 간선 존재 X -> 비교 불가능 (가중치가 초기화한 값인 INF로 설정되어있음)
+
+void floydWarshall(int n, vector>& graph) {
+ for (int k = 1; k <= n; k++) { // 중간 정점
+ for (int i = 1; i <= n; i++) { // 출발 정점
+ for (int j = 1; j <= n; j++) { // 도착 정점
+ // 중간에 k를 거쳐서 i에서 j로 갈 때의 비용
+ int cost = graph[i][k] + graph[k][j];
+ // 더 짧은 경로 선택
+ graph[i][j] = min(graph[i][j], cost);
+ }
+ }
+ }
+}
+
+int main() {
+ ios_base::sync_with_stdio(false);
+ cin.tie(NULL), cout.tie(NULL);
+
+ int N, M; // 학생 수, 비교한 횟수
+ cin >> N >> M;
+ vector> graph(N + 1, vector(N + 1, INF));
+ for (int i = 1; i <= N; i++) { // 자기 자신과의 거리
+ graph[i][i] = 0;
+ }
+
+ int a, b;
+ while (M--) {
+ cin >> a >> b; // ab
+ graph[a][b] = 1; // 두 학생사이의 간선이 있는 경우
+ }
+ floydWarshall(N, graph);
+
+ int count = 0;
+ for (int i = 1; i <= N; i++) {
+ bool check = true; // 비교 가능
+ for (int j = 1; j <= N; j++) {
+ if (i != j && graph[i][j] == INF && graph[j][i] == INF) {
+ // 둘이 같지 않고 가중치가 INF이면
+ // i번째 학생과 j번째 학생 사이의 경로가 없음
+ check = false; // 비교 불가능
+ break;
+ }
+ }
+ if (check) count++;
+ }
+ cout << count;
+ return 0;
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index b5d5a084..15359915 100644
--- a/README.md
+++ b/README.md
@@ -28,9 +28,9 @@ SW학부 원스탑 튜터링에서 진행하는 코딩 테스트 대비 알고
| 2023.04.07 | 백트래킹 | [@sujeong000](https://github.com/sujeong000) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/blob/main/08_%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C/08_%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9_%EC%9D%B4%EB%A1%A0.pdf) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/08_%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9) | - |
| 2023.04.14 | 동적 계획법 | [@sujeong000](https://github.com/sujeong000) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/blob/main/09_%EB%8F%99%EC%A0%81%20%EA%B3%84%ED%9A%8D%EB%B2%95/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C/09_%EB%8F%99%EC%A0%81%EA%B3%84%ED%9A%8D%EB%B2%95_%EC%9D%B4%EB%A1%A0.pdf) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/09_%EB%8F%99%EC%A0%81%20%EA%B3%84%ED%9A%8D%EB%B2%95) | - |
| 2023.05.05 | 이분 탐색 | [@grdnr13](https://github.com/grdnr13) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/blob/main/10_%EC%9D%B4%EB%B6%84%20%ED%83%90%EC%83%89/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C/10_%EC%9D%B4%EB%B6%84%ED%83%90%EC%83%89_%EC%9D%B4%EB%A1%A0.pdf) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/10_%EC%9D%B4%EB%B6%84%20%ED%83%90%EC%83%89) | 녹화 강의 제공 |
-| 2023.05.12 | 투 포인터 | [@kwakrhkr59](https://github.com/kwakrhkr59) | [바로가기]() | [바로가기]() | - |
-| 2023.05.19 | 트리 | [@dbswn](https://github.com/dbswn) | [바로가기]() | [바로가기]() | - |
-| 2023.05.26 | 최단 경로 | [@Dong-droid](https://github.com/Dong-droid) | [바로가기]() | [바로가기]() | - |
+| 2023.05.12 | 투 포인터 | [@kwakrhkr59](https://github.com/kwakrhkr59) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/11_%ED%88%AC%20%ED%8F%AC%EC%9D%B8%ED%84%B0/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/11_%ED%88%AC%20%ED%8F%AC%EC%9D%B8%ED%84%B0) | - |
+| 2023.05.19 | 트리 | [@dbswn](https://github.com/dbswn) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/blob/main/12_%ED%8A%B8%EB%A6%AC/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C/12_%ED%8A%B8%EB%A6%AC_%EC%9D%B4%EB%A1%A0.pdf) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/12_%ED%8A%B8%EB%A6%AC) | - |
+| 2023.05.26 | 최단 경로 | [@Dong-droid](https://github.com/Dong-droid) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/blob/main/13_%EC%B5%9C%EB%8B%A8%20%EA%B2%BD%EB%A1%9C/%EA%B0%95%EC%9D%98%20%EC%9E%90%EB%A3%8C/13_%EC%B5%9C%EB%8B%A8%EA%B2%BD%EB%A1%9C_%EC%9D%B4%EB%A1%A0.pdf) | [바로가기](https://github.com/Altu-Bitu-Official/Altu-Bitu-4/tree/main/13_%EC%B5%9C%EB%8B%A8%20%EA%B2%BD%EB%A1%9C) | - |
| 2023.06.02 | 유니온 파인드 | [@bsa0322](https://github.com/bsa0322) | [바로가기]() | [바로가기]() | 2기 자료 제공 |
| 2023.06.02 | 최소 신장 트리 | [@ZERO-black](https://github.com/ZERO-black) | [바로가기]() | [바로가기]() | 2기 자료 제공 |
| 2023.06.02 | 위상 정렬 | [@bsa0322](https://github.com/bsa0322) | [바로가기]() | [바로가기]() | 2기 자료 제공 |