diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..5e31b9e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..812ab5a
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..f4fb4ef
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..aeca9c4
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "associatedIndex": 5
+}
+
+
+
+
+
+
+
+
+ {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "last_opened_file_path": "/Users/ksy/git/Algorithms",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "vue.rearranger.settings.migration": "true"
+ }
+}
+
+
+
+
+ 1691718087291
+
+
+ 1691718087291
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Algorithms.iml b/Algorithms.iml
new file mode 100644
index 0000000..4d4b884
--- /dev/null
+++ b/Algorithms.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build/classes/.gitignore b/build/classes/.gitignore
new file mode 100644
index 0000000..f17a489
--- /dev/null
+++ b/build/classes/.gitignore
@@ -0,0 +1 @@
+/KSY/
diff --git a/build/classes/KSY/Building.class b/build/classes/KSY/Building.class
new file mode 100644
index 0000000..ff90f2e
Binary files /dev/null and b/build/classes/KSY/Building.class differ
diff --git a/build/classes/KSY/Candi.class b/build/classes/KSY/Candi.class
new file mode 100644
index 0000000..58a39dd
Binary files /dev/null and b/build/classes/KSY/Candi.class differ
diff --git a/build/classes/KSY/Candidate.class b/build/classes/KSY/Candidate.class
new file mode 100644
index 0000000..83927f5
Binary files /dev/null and b/build/classes/KSY/Candidate.class differ
diff --git a/build/classes/KSY/Cell.class b/build/classes/KSY/Cell.class
new file mode 100644
index 0000000..e7809eb
Binary files /dev/null and b/build/classes/KSY/Cell.class differ
diff --git a/build/classes/KSY/Core.class b/build/classes/KSY/Core.class
new file mode 100644
index 0000000..4c2a110
Binary files /dev/null and b/build/classes/KSY/Core.class differ
diff --git a/build/classes/KSY/Flower.class b/build/classes/KSY/Flower.class
new file mode 100644
index 0000000..f0aa94f
Binary files /dev/null and b/build/classes/KSY/Flower.class differ
diff --git a/build/classes/KSY/Node.class b/build/classes/KSY/Node.class
new file mode 100644
index 0000000..9cefe95
Binary files /dev/null and b/build/classes/KSY/Node.class differ
diff --git a/build/classes/KSY/Point.class b/build/classes/KSY/Point.class
new file mode 100644
index 0000000..e9bc039
Binary files /dev/null and b/build/classes/KSY/Point.class differ
diff --git a/build/classes/KSY/Point2.class b/build/classes/KSY/Point2.class
new file mode 100644
index 0000000..d3c747d
Binary files /dev/null and b/build/classes/KSY/Point2.class differ
diff --git a/build/classes/KSY/Pos.class b/build/classes/KSY/Pos.class
new file mode 100644
index 0000000..0f45485
Binary files /dev/null and b/build/classes/KSY/Pos.class differ
diff --git a/build/classes/KSY/Position.class b/build/classes/KSY/Position.class
new file mode 100644
index 0000000..29bd1d5
Binary files /dev/null and b/build/classes/KSY/Position.class differ
diff --git "a/build/classes/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.class" "b/build/classes/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.class"
new file mode 100644
index 0000000..9b48d46
Binary files /dev/null and "b/build/classes/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.class" differ
diff --git "a/build/classes/KSY/Programmers_\353\266\210\353\237\211\354\202\254\354\232\251\354\236\220.class" "b/build/classes/KSY/Programmers_\353\266\210\353\237\211\354\202\254\354\232\251\354\236\220.class"
new file mode 100644
index 0000000..bad9bf5
Binary files /dev/null and "b/build/classes/KSY/Programmers_\353\266\210\353\237\211\354\202\254\354\232\251\354\236\220.class" differ
diff --git a/build/classes/KSY/S1005_ACM_Craft.class b/build/classes/KSY/S1005_ACM_Craft.class
new file mode 100644
index 0000000..7edc78f
Binary files /dev/null and b/build/classes/KSY/S1005_ACM_Craft.class differ
diff --git "a/build/classes/KSY/S1043_\352\261\260\354\247\223\353\247\220.class" "b/build/classes/KSY/S1043_\352\261\260\354\247\223\353\247\220.class"
new file mode 100644
index 0000000..c0c2793
Binary files /dev/null and "b/build/classes/KSY/S1043_\352\261\260\354\247\223\353\247\220.class" differ
diff --git a/build/classes/KSY/S1068.class b/build/classes/KSY/S1068.class
new file mode 100644
index 0000000..1a200ca
Binary files /dev/null and b/build/classes/KSY/S1068.class differ
diff --git a/build/classes/KSY/S11725.class b/build/classes/KSY/S11725.class
new file mode 100644
index 0000000..9d6a63d
Binary files /dev/null and b/build/classes/KSY/S11725.class differ
diff --git "a/build/classes/KSY/S1174_\354\244\204\354\226\264\353\223\234\353\212\224\354\210\230.class" "b/build/classes/KSY/S1174_\354\244\204\354\226\264\353\223\234\353\212\224\354\210\230.class"
new file mode 100644
index 0000000..ed498d7
Binary files /dev/null and "b/build/classes/KSY/S1174_\354\244\204\354\226\264\353\223\234\353\212\224\354\210\230.class" differ
diff --git "a/build/classes/KSY/S1238_\355\214\214\355\213\260.class" "b/build/classes/KSY/S1238_\355\214\214\355\213\260.class"
new file mode 100644
index 0000000..9062d21
Binary files /dev/null and "b/build/classes/KSY/S1238_\355\214\214\355\213\260.class" differ
diff --git a/build/classes/KSY/S1240.class b/build/classes/KSY/S1240.class
new file mode 100644
index 0000000..9946979
Binary files /dev/null and b/build/classes/KSY/S1240.class differ
diff --git a/build/classes/KSY/S1260.class b/build/classes/KSY/S1260.class
new file mode 100644
index 0000000..afe770e
Binary files /dev/null and b/build/classes/KSY/S1260.class differ
diff --git "a/build/classes/KSY/S14500_\355\205\214\355\201\254\353\205\270\353\257\270\353\241\234.class" "b/build/classes/KSY/S14500_\355\205\214\355\201\254\353\205\270\353\257\270\353\241\234.class"
new file mode 100644
index 0000000..276db42
Binary files /dev/null and "b/build/classes/KSY/S14500_\355\205\214\355\201\254\353\205\270\353\257\270\353\241\234.class" differ
diff --git "a/build/classes/KSY/S14501_\355\207\264\354\202\254.class" "b/build/classes/KSY/S14501_\355\207\264\354\202\254.class"
new file mode 100644
index 0000000..e4b7023
Binary files /dev/null and "b/build/classes/KSY/S14501_\355\207\264\354\202\254.class" differ
diff --git "a/build/classes/KSY/S14502_\354\227\260\352\265\254\354\206\214.class" "b/build/classes/KSY/S14502_\354\227\260\352\265\254\354\206\214.class"
new file mode 100644
index 0000000..154ff5b
Binary files /dev/null and "b/build/classes/KSY/S14502_\354\227\260\352\265\254\354\206\214.class" differ
diff --git a/build/classes/KSY/S1525.class b/build/classes/KSY/S1525.class
new file mode 100644
index 0000000..31ac08d
Binary files /dev/null and b/build/classes/KSY/S1525.class differ
diff --git a/build/classes/KSY/S16401.class b/build/classes/KSY/S16401.class
new file mode 100644
index 0000000..49077f0
Binary files /dev/null and b/build/classes/KSY/S16401.class differ
diff --git "a/build/classes/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.class" "b/build/classes/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.class"
new file mode 100644
index 0000000..25ffd41
Binary files /dev/null and "b/build/classes/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.class" differ
diff --git "a/build/classes/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.class" "b/build/classes/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.class"
new file mode 100644
index 0000000..1528974
Binary files /dev/null and "b/build/classes/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.class" differ
diff --git "a/build/classes/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.class" "b/build/classes/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.class"
new file mode 100644
index 0000000..a114fad
Binary files /dev/null and "b/build/classes/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.class" differ
diff --git "a/build/classes/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.class" "b/build/classes/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.class"
new file mode 100644
index 0000000..7e52d1e
Binary files /dev/null and "b/build/classes/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.class" differ
diff --git "a/build/classes/KSY/S1766_\353\254\270\354\240\234\354\247\221.class" "b/build/classes/KSY/S1766_\353\254\270\354\240\234\354\247\221.class"
new file mode 100644
index 0000000..fc62a6b
Binary files /dev/null and "b/build/classes/KSY/S1766_\353\254\270\354\240\234\354\247\221.class" differ
diff --git "a/build/classes/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.class" "b/build/classes/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.class"
new file mode 100644
index 0000000..23da80e
Binary files /dev/null and "b/build/classes/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.class" differ
diff --git "a/build/classes/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.class" "b/build/classes/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..0d47a65
Binary files /dev/null and "b/build/classes/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.class" differ
diff --git a/build/classes/KSY/S18809_Gaaaaaaaaaarden.class b/build/classes/KSY/S18809_Gaaaaaaaaaarden.class
new file mode 100644
index 0000000..91e0530
Binary files /dev/null and b/build/classes/KSY/S18809_Gaaaaaaaaaarden.class differ
diff --git a/build/classes/KSY/S1946.class b/build/classes/KSY/S1946.class
new file mode 100644
index 0000000..e58d026
Binary files /dev/null and b/build/classes/KSY/S1946.class differ
diff --git a/build/classes/KSY/S1949.class b/build/classes/KSY/S1949.class
new file mode 100644
index 0000000..3fa7a26
Binary files /dev/null and b/build/classes/KSY/S1949.class differ
diff --git a/build/classes/KSY/S2178.class b/build/classes/KSY/S2178.class
new file mode 100644
index 0000000..221fe5d
Binary files /dev/null and b/build/classes/KSY/S2178.class differ
diff --git "a/build/classes/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.class" "b/build/classes/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.class"
new file mode 100644
index 0000000..1537423
Binary files /dev/null and "b/build/classes/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.class" differ
diff --git "a/build/classes/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.class" "b/build/classes/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..35c0cbe
Binary files /dev/null and "b/build/classes/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.class" differ
diff --git "a/build/classes/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.class" "b/build/classes/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.class"
new file mode 100644
index 0000000..ea3fa11
Binary files /dev/null and "b/build/classes/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.class" differ
diff --git a/build/classes/KSY/S2533.class b/build/classes/KSY/S2533.class
new file mode 100644
index 0000000..d9b2b77
Binary files /dev/null and b/build/classes/KSY/S2533.class differ
diff --git a/build/classes/KSY/S2847.class b/build/classes/KSY/S2847.class
new file mode 100644
index 0000000..414b5c4
Binary files /dev/null and b/build/classes/KSY/S2847.class differ
diff --git "a/build/classes/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.class" "b/build/classes/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..fd98423
Binary files /dev/null and "b/build/classes/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.class" differ
diff --git "a/build/classes/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.class" "b/build/classes/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.class"
new file mode 100644
index 0000000..e3b9002
Binary files /dev/null and "b/build/classes/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.class" differ
diff --git "a/build/classes/KSY/S7569_\355\206\240\353\247\210\355\206\240.class" "b/build/classes/KSY/S7569_\355\206\240\353\247\210\355\206\240.class"
new file mode 100644
index 0000000..2db0d0d
Binary files /dev/null and "b/build/classes/KSY/S7569_\355\206\240\353\247\210\355\206\240.class" differ
diff --git "a/build/classes/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.class" "b/build/classes/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.class"
new file mode 100644
index 0000000..29b3984
Binary files /dev/null and "b/build/classes/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.class" differ
diff --git "a/build/classes/KSY/S9095_123\353\215\224\355\225\230\352\270\260.class" "b/build/classes/KSY/S9095_123\353\215\224\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..ff9e743
Binary files /dev/null and "b/build/classes/KSY/S9095_123\353\215\224\355\225\230\352\270\260.class" differ
diff --git "a/build/classes/KSY/S9205_\353\247\245\354\243\274\353\247\210\354\213\234\353\251\264\354\204\234\352\261\270\354\226\264\352\260\200\352\270\260.class" "b/build/classes/KSY/S9205_\353\247\245\354\243\274\353\247\210\354\213\234\353\251\264\354\204\234\352\261\270\354\226\264\352\260\200\352\270\260.class"
new file mode 100644
index 0000000..49cbda0
Binary files /dev/null and "b/build/classes/KSY/S9205_\353\247\245\354\243\274\353\247\210\354\213\234\353\251\264\354\204\234\352\261\270\354\226\264\352\260\200\352\270\260.class" differ
diff --git "a/build/classes/KSY/SWEA_1767_\355\224\204\353\241\234\354\204\270\354\204\234\354\227\260\352\262\260\355\225\230\352\270\260.class" "b/build/classes/KSY/SWEA_1767_\355\224\204\353\241\234\354\204\270\354\204\234\354\227\260\352\262\260\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..a7b5d82
Binary files /dev/null and "b/build/classes/KSY/SWEA_1767_\355\224\204\353\241\234\354\204\270\354\204\234\354\227\260\352\262\260\355\225\230\352\270\260.class" differ
diff --git a/build/classes/KSY/Tomato.class b/build/classes/KSY/Tomato.class
new file mode 100644
index 0000000..1fb9fc7
Binary files /dev/null and b/build/classes/KSY/Tomato.class differ
diff --git a/build/classes/KSY/Wall.class b/build/classes/KSY/Wall.class
new file mode 100644
index 0000000..ea6ab21
Binary files /dev/null and b/build/classes/KSY/Wall.class differ
diff --git a/build/classes/KSY/input.txt b/build/classes/KSY/input.txt
new file mode 100644
index 0000000..387bd1b
--- /dev/null
+++ b/build/classes/KSY/input.txt
@@ -0,0 +1,61 @@
+30
+2
+5 5
+2
+4 2
+2
+3 4
+4
+2 3 10 5
+4
+1 2 3 4
+20
+26 19 23 2 24 2 17 15 1 27 6 29 18 23 27 13 26 21 9 1
+20
+4 5 3 4 2 4 4 3 5 2 2 3 5 5 5 2 5 2 5 5
+20
+1 3 6 5 5 1 5 4 3 5 4 2 4 6 5 5 4 5 5 3
+20
+4 5 6 6 5 3 1 3 3 3 3 5 3 3 3 4 5 1 4 3
+20
+26 6 8 15 10 15 14 6 19 16 5 13 9 12 14 29 28 3 12 27
+30
+8 27 2 32 19 16 19 11 33 35 7 9 6 12 7 1 1 28 38 32 25 14 5 15 34 30 14 24 7 24
+30
+3 2 5 5 5 4 4 5 2 4 3 4 3 5 5 2 5 4 2 5 2 1 5 4 4 3 2 4 2 4
+30
+6 4 6 5 6 1 1 6 4 5 6 6 5 1 3 6 5 5 5 4 6 1 1 5 3 3 6 1 5 5
+30
+1 6 3 5 6 1 4 5 4 5 5 5 6 5 2 3 6 2 3 5 5 1 5 4 6 5 6 4 6 6
+30
+35 8 19 40 12 17 11 29 14 21 31 39 28 33 16 19 34 12 12 10 28 40 6 19 36 19 10 2 34 22
+50
+37 59 11 13 18 30 22 53 35 18 27 7 50 19 57 38 54 24 31 38 4 8 9 54 37 29 32 27 11 7 19 57 36 54 35 31 45 2 10 54 27 14 51 27 34 51 1 58 4 6
+50
+2 2 5 2 3 2 3 1 3 5 5 3 2 2 2 3 4 4 4 2 1 5 4 4 4 2 3 4 2 5 4 3 5 3 5 2 2 4 4 4 5 5 3 4 2 3 4 4 5 4
+50
+6 6 5 4 6 6 1 4 2 1 4 6 2 3 5 6 5 5 1 5 5 4 5 3 1 6 3 6 5 3 5 1 3 5 3 6 3 5 5 2 4 3 6 3 5 5 3 5 5 6
+50
+5 5 5 1 4 5 3 2 4 5 5 5 6 3 2 5 5 6 3 5 3 5 4 6 5 5 3 3 6 5 6 1 3 4 4 6 1 6 3 3 6 3 2 6 6 1 5 4 5 4
+50
+11 17 35 37 41 2 8 20 40 5 25 58 54 7 36 33 46 44 37 53 15 8 42 56 35 2 40 55 50 58 49 2 35 19 32 54 18 12 22 56 23 17 47 4 30 56 48 4 36 33
+70
+37 26 72 57 38 33 9 6 66 71 59 55 21 58 65 57 27 36 14 27 7 76 34 34 8 55 23 80 41 35 39 38 8 5 17 23 42 1 27 78 77 26 74 51 13 27 32 11 75 37 37 62 75 73 41 28 29 57 56 18 79 27 48 9 1 30 31 65 73 63
+70
+3 4 4 3 4 5 4 1 5 4 4 5 5 5 4 4 2 3 3 4 4 2 3 2 5 1 2 5 4 4 4 5 2 2 4 2 3 2 3 5 4 5 4 4 1 2 3 4 4 4 5 3 5 5 4 5 4 3 5 5 2 4 1 4 2 4 5 3 5 3
+70
+6 5 1 3 3 5 5 5 3 5 3 4 2 6 5 5 1 2 1 3 5 4 6 1 1 5 5 5 5 5 6 6 5 1 1 5 3 5 4 5 3 5 2 4 3 1 2 5 6 3 6 3 4 4 5 3 5 5 3 3 6 5 2 1 3 5 6 5 4 5
+70
+5 5 4 6 6 3 4 1 1 1 3 6 6 1 5 5 1 5 3 5 6 3 5 3 4 6 1 5 2 6 3 5 6 5 3 5 1 3 4 4 6 5 2 1 6 5 4 5 5 4 5 6 3 5 2 4 3 3 3 3 3 6 3 5 5 3 5 4 5 5
+70
+47 25 56 22 41 75 1 47 39 28 48 52 43 50 56 2 50 41 35 6 36 23 60 67 73 3 30 52 31 8 60 34 10 55 35 24 28 75 45 5 37 49 24 1 59 7 6 20 77 4 5 67 5 25 18 61 29 54 41 69 68 16 33 48 65 18 22 34 70 2
+100
+30 108 8 61 17 56 54 29 50 72 9 97 67 36 75 110 88 99 75 93 19 44 39 45 72 53 115 106 1 20 25 118 117 51 89 72 116 33 76 26 6 47 35 55 45 89 78 69 56 78 58 95 34 9 1 14 2 9 8 64 12 85 117 49 40 44 8 2 89 36 12 56 89 18 38 63 3 57 29 110 25 46 98 20 119 52 114 107 23 11 105 35 119 55 82 115 56 85 68 28
+100
+2 4 4 3 1 3 4 5 5 2 3 2 4 4 4 4 4 2 4 1 5 3 5 3 2 3 4 4 2 2 3 5 2 4 2 4 3 4 4 2 4 5 4 5 4 4 4 5 5 3 3 4 4 1 2 1 5 2 4 4 4 1 2 4 1 2 1 4 5 2 4 5 5 2 4 5 1 4 3 5 4 5 2 3 2 5 4 4 5 3 2 4 4 2 2 5 5 1 2 2
+100
+4 5 2 6 6 1 5 2 1 1 3 5 3 3 5 6 5 6 3 5 5 5 1 1 6 3 5 5 6 5 4 4 6 6 1 5 1 5 1 4 5 5 2 5 5 5 5 3 6 3 2 5 5 6 6 3 5 3 1 2 5 1 4 6 4 6 1 3 4 3 6 1 1 5 2 3 1 5 3 5 6 5 5 5 5 3 5 6 2 6 5 4 3 5 5 3 5 6 5 6
+100
+3 6 5 1 6 5 6 1 6 5 5 6 6 5 5 6 3 5 3 5 6 6 3 5 5 6 3 3 3 2 4 6 4 4 5 4 5 6 6 5 1 5 2 3 3 3 5 3 6 5 4 3 6 5 6 6 5 5 5 2 3 5 1 6 1 6 3 3 6 5 2 6 3 2 3 3 5 1 6 5 5 6 1 3 4 3 3 5 2 1 1 6 1 5 6 4 6 5 4 5
+100
+68 88 9 43 34 56 114 65 16 83 42 2 120 94 45 100 44 110 47 34 16 112 24 108 22 78 88 120 65 69 108 81 36 53 82 15 67 56 82 95 74 95 14 77 29 97 68 103 32 109 88 115 80 107 15 116 81 78 82 17 98 100 47 103 30 41 55 72 100 24 11 19 105 12 64 102 100 22 21 106 50 8 66 14 20 58 43 14 78 82 21 5 1 81 89 65 35 20 87 47
diff --git "a/build/classes/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.class" "b/build/classes/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.class"
new file mode 100644
index 0000000..a95e8c6
Binary files /dev/null and "b/build/classes/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.class" differ
diff --git "a/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.class" "b/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.class"
new file mode 100644
index 0000000..f9f6abf
Binary files /dev/null and "b/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.class" differ
diff --git "a/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201_\352\260\200\354\212\244\352\264\200.class" "b/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201_\352\260\200\354\212\244\352\264\200.class"
new file mode 100644
index 0000000..7b2ac3c
Binary files /dev/null and "b/build/classes/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201_\352\260\200\354\212\244\352\264\200.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/BJ2178_\353\257\270\353\241\234\355\203\220\354\203\211.class" "b/build/classes/KSY/personal/AlgoURa/BJ2178_\353\257\270\353\241\234\355\203\220\354\203\211.class"
new file mode 100644
index 0000000..96004ec
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/BJ2178_\353\257\270\353\241\234\355\203\220\354\203\211.class" differ
diff --git a/build/classes/KSY/personal/AlgoURa/CompleteBinaryTree1.class b/build/classes/KSY/personal/AlgoURa/CompleteBinaryTree1.class
new file mode 100644
index 0000000..69302a2
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/CompleteBinaryTree1.class differ
diff --git a/build/classes/KSY/personal/AlgoURa/PermutationBitTest.class b/build/classes/KSY/personal/AlgoURa/PermutationBitTest.class
new file mode 100644
index 0000000..f84ab23
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/PermutationBitTest.class differ
diff --git a/build/classes/KSY/personal/AlgoURa/PermutationBitTest2.class b/build/classes/KSY/personal/AlgoURa/PermutationBitTest2.class
new file mode 100644
index 0000000..59656ec
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/PermutationBitTest2.class differ
diff --git a/build/classes/KSY/personal/AlgoURa/PermutationNPTest.class b/build/classes/KSY/personal/AlgoURa/PermutationNPTest.class
new file mode 100644
index 0000000..2c329a1
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/PermutationNPTest.class differ
diff --git a/build/classes/KSY/personal/AlgoURa/Point.class b/build/classes/KSY/personal/AlgoURa/Point.class
new file mode 100644
index 0000000..5d6a5a8
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/Point.class differ
diff --git a/build/classes/KSY/personal/AlgoURa/SlidingWindowTest.class b/build/classes/KSY/personal/AlgoURa/SlidingWindowTest.class
new file mode 100644
index 0000000..5a9c188
Binary files /dev/null and b/build/classes/KSY/personal/AlgoURa/SlidingWindowTest.class differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest$Node.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest$Node.class"
new file mode 100644
index 0000000..ffd35a5
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest$Node.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest.class"
new file mode 100644
index 0000000..6e21254
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/AdjMatrixTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.class"
new file mode 100644
index 0000000..b7a2339
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/NQueenTest1.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/NQueenTest1.class"
new file mode 100644
index 0000000..2ceb7e6
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/NQueenTest1.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/SquareNumberTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/SquareNumberTest.class"
new file mode 100644
index 0000000..ff35d4f
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2507/SquareNumberTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest$Node.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest$Node.class"
new file mode 100644
index 0000000..b0c4cf5
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest$Node.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.class"
new file mode 100644
index 0000000..18a83ba
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest$Node.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest$Node.class"
new file mode 100644
index 0000000..16bfadb
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest$Node.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.class"
new file mode 100644
index 0000000..9a5bff3
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.class"
new file mode 100644
index 0000000..771c15c
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.class"
new file mode 100644
index 0000000..a3467d5
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest$Vertex.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest$Vertex.class"
new file mode 100644
index 0000000..b39ccf3
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest$Vertex.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.class"
new file mode 100644
index 0000000..47ac1a6
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.class"
new file mode 100644
index 0000000..196f7db
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.class"
new file mode 100644
index 0000000..a4df9c9
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.class"
new file mode 100644
index 0000000..e16a053
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.class" differ
diff --git "a/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.class" "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..c3d51b9
Binary files /dev/null and "b/build/classes/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.class" "b/build/classes/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.class"
new file mode 100644
index 0000000..8f105b9
Binary files /dev/null and "b/build/classes/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt"
new file mode 100644
index 0000000..0fa4694
--- /dev/null
+++ "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt"
@@ -0,0 +1,7 @@
+3
+4
+1 1 2
+4
+1 1 3
+11
+1 1 3 3 2 4 1 3 2 9
\ No newline at end of file
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/Soldier.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/Soldier.class"
new file mode 100644
index 0000000..0526e86
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/Soldier.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.class"
new file mode 100644
index 0000000..3ad4902
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class"
new file mode 100644
index 0000000..f0d2f43
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class"
new file mode 100644
index 0000000..33eba8e
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.class"
new file mode 100644
index 0000000..9c4fbe8
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.class"
new file mode 100644
index 0000000..2e045ec
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.class"
new file mode 100644
index 0000000..734606e
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\235\264\354\247\204\354\210\230\355\221\234\355\230\204.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\235\264\354\247\204\354\210\230\355\221\234\355\230\204.class"
new file mode 100644
index 0000000..e2eec02
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\235\264\354\247\204\354\210\230\355\221\234\355\230\204.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Node.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Node.class"
new file mode 100644
index 0000000..4992875
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Node.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Soldier.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Soldier.class"
new file mode 100644
index 0000000..f356d9b
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/Soldier.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\352\263\265\355\206\265\354\241\260\354\203\201.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\352\263\265\355\206\265\354\241\260\354\203\201.class"
new file mode 100644
index 0000000..ef85e96
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\352\263\265\355\206\265\354\241\260\354\203\201.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254main.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254main.class"
new file mode 100644
index 0000000..b3f8b60
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254main.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class"
new file mode 100644
index 0000000..5df1fa4
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode$soldier.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class"
new file mode 100644
index 0000000..438ce48
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\353\263\221\354\202\254\352\264\200\353\246\254userCode.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.class"
new file mode 100644
index 0000000..56e79d5
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.class"
new file mode 100644
index 0000000..9ebc1e7
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.class"
new file mode 100644
index 0000000..c8200ce
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.class"
new file mode 100644
index 0000000..343fe68
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S3282_01Knapsack.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S3282_01Knapsack.class"
new file mode 100644
index 0000000..53e46f6
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S3282_01Knapsack.class" differ
diff --git "a/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.class" "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.class"
new file mode 100644
index 0000000..d477f34
Binary files /dev/null and "b/build/classes/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.class" differ
diff --git a/build/classes/KSY/personal/Point.class b/build/classes/KSY/personal/Point.class
new file mode 100644
index 0000000..1414ab0
Binary files /dev/null and b/build/classes/KSY/personal/Point.class differ
diff --git a/build/classes/KSY/personal/Practice/Monster.class b/build/classes/KSY/personal/Practice/Monster.class
new file mode 100644
index 0000000..34bfd0d
Binary files /dev/null and b/build/classes/KSY/personal/Practice/Monster.class differ
diff --git a/build/classes/KSY/personal/Practice/Person.class b/build/classes/KSY/personal/Practice/Person.class
new file mode 100644
index 0000000..384dfdc
Binary files /dev/null and b/build/classes/KSY/personal/Practice/Person.class differ
diff --git a/build/classes/KSY/personal/Practice/Position.class b/build/classes/KSY/personal/Practice/Position.class
new file mode 100644
index 0000000..59b5301
Binary files /dev/null and b/build/classes/KSY/personal/Practice/Position.class differ
diff --git "a/build/classes/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.class" "b/build/classes/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.class"
new file mode 100644
index 0000000..b124eae
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S11048_\354\235\264\353\217\231\355\225\230\352\270\260.class" "b/build/classes/KSY/personal/Practice/S11048_\354\235\264\353\217\231\355\225\230\352\270\260.class"
new file mode 100644
index 0000000..e36c05f
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S11048_\354\235\264\353\217\231\355\225\230\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S11723_\354\247\221\355\225\251.class" "b/build/classes/KSY/personal/Practice/S11723_\354\247\221\355\225\251.class"
new file mode 100644
index 0000000..10181cd
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S11723_\354\247\221\355\225\251.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S15642_N\352\263\274M_4.class" "b/build/classes/KSY/personal/Practice/S15642_N\352\263\274M_4.class"
new file mode 100644
index 0000000..342817a
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S15642_N\352\263\274M_4.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.class" "b/build/classes/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.class"
new file mode 100644
index 0000000..88cea36
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S16554_N\352\263\274M5.class" "b/build/classes/KSY/personal/Practice/S16554_N\352\263\274M5.class"
new file mode 100644
index 0000000..78d467f
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S16554_N\352\263\274M5.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S1676_\355\214\251\355\206\240\353\246\254\354\226\2740\354\235\230\352\260\234\354\210\230.class" "b/build/classes/KSY/personal/Practice/S1676_\355\214\251\355\206\240\353\246\254\354\226\2740\354\235\230\352\260\234\354\210\230.class"
new file mode 100644
index 0000000..7a529ba
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S1676_\355\214\251\355\206\240\353\246\254\354\226\2740\354\235\230\352\260\234\354\210\230.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.class" "b/build/classes/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.class"
new file mode 100644
index 0000000..2e1a19b
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S1780_\354\242\205\354\235\264\354\235\230\352\260\234\354\210\230.class" "b/build/classes/KSY/personal/Practice/S1780_\354\242\205\354\235\264\354\235\230\352\260\234\354\210\230.class"
new file mode 100644
index 0000000..5958a56
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S1780_\354\242\205\354\235\264\354\235\230\352\260\234\354\210\230.class" differ
diff --git a/build/classes/KSY/personal/Practice/S18110_Solvedac.class b/build/classes/KSY/personal/Practice/S18110_Solvedac.class
new file mode 100644
index 0000000..ea8c620
Binary files /dev/null and b/build/classes/KSY/personal/Practice/S18110_Solvedac.class differ
diff --git "a/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231$Number.class" "b/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231$Number.class"
new file mode 100644
index 0000000..deff9e3
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231$Number.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231.class" "b/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231.class"
new file mode 100644
index 0000000..183afb0
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S2108_\355\206\265\352\263\204\355\225\231.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.class" "b/build/classes/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.class"
new file mode 100644
index 0000000..872bc0d
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.class" "b/build/classes/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.class"
new file mode 100644
index 0000000..38a1a70
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.class" differ
diff --git "a/build/classes/KSY/personal/Practice/S7568_\353\215\251\354\271\230.class" "b/build/classes/KSY/personal/Practice/S7568_\353\215\251\354\271\230.class"
new file mode 100644
index 0000000..fb5f5c9
Binary files /dev/null and "b/build/classes/KSY/personal/Practice/S7568_\353\215\251\354\271\230.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.class"
new file mode 100644
index 0000000..aed24f7
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt"
new file mode 100644
index 0000000..387bd1b
--- /dev/null
+++ "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt"
@@ -0,0 +1,61 @@
+30
+2
+5 5
+2
+4 2
+2
+3 4
+4
+2 3 10 5
+4
+1 2 3 4
+20
+26 19 23 2 24 2 17 15 1 27 6 29 18 23 27 13 26 21 9 1
+20
+4 5 3 4 2 4 4 3 5 2 2 3 5 5 5 2 5 2 5 5
+20
+1 3 6 5 5 1 5 4 3 5 4 2 4 6 5 5 4 5 5 3
+20
+4 5 6 6 5 3 1 3 3 3 3 5 3 3 3 4 5 1 4 3
+20
+26 6 8 15 10 15 14 6 19 16 5 13 9 12 14 29 28 3 12 27
+30
+8 27 2 32 19 16 19 11 33 35 7 9 6 12 7 1 1 28 38 32 25 14 5 15 34 30 14 24 7 24
+30
+3 2 5 5 5 4 4 5 2 4 3 4 3 5 5 2 5 4 2 5 2 1 5 4 4 3 2 4 2 4
+30
+6 4 6 5 6 1 1 6 4 5 6 6 5 1 3 6 5 5 5 4 6 1 1 5 3 3 6 1 5 5
+30
+1 6 3 5 6 1 4 5 4 5 5 5 6 5 2 3 6 2 3 5 5 1 5 4 6 5 6 4 6 6
+30
+35 8 19 40 12 17 11 29 14 21 31 39 28 33 16 19 34 12 12 10 28 40 6 19 36 19 10 2 34 22
+50
+37 59 11 13 18 30 22 53 35 18 27 7 50 19 57 38 54 24 31 38 4 8 9 54 37 29 32 27 11 7 19 57 36 54 35 31 45 2 10 54 27 14 51 27 34 51 1 58 4 6
+50
+2 2 5 2 3 2 3 1 3 5 5 3 2 2 2 3 4 4 4 2 1 5 4 4 4 2 3 4 2 5 4 3 5 3 5 2 2 4 4 4 5 5 3 4 2 3 4 4 5 4
+50
+6 6 5 4 6 6 1 4 2 1 4 6 2 3 5 6 5 5 1 5 5 4 5 3 1 6 3 6 5 3 5 1 3 5 3 6 3 5 5 2 4 3 6 3 5 5 3 5 5 6
+50
+5 5 5 1 4 5 3 2 4 5 5 5 6 3 2 5 5 6 3 5 3 5 4 6 5 5 3 3 6 5 6 1 3 4 4 6 1 6 3 3 6 3 2 6 6 1 5 4 5 4
+50
+11 17 35 37 41 2 8 20 40 5 25 58 54 7 36 33 46 44 37 53 15 8 42 56 35 2 40 55 50 58 49 2 35 19 32 54 18 12 22 56 23 17 47 4 30 56 48 4 36 33
+70
+37 26 72 57 38 33 9 6 66 71 59 55 21 58 65 57 27 36 14 27 7 76 34 34 8 55 23 80 41 35 39 38 8 5 17 23 42 1 27 78 77 26 74 51 13 27 32 11 75 37 37 62 75 73 41 28 29 57 56 18 79 27 48 9 1 30 31 65 73 63
+70
+3 4 4 3 4 5 4 1 5 4 4 5 5 5 4 4 2 3 3 4 4 2 3 2 5 1 2 5 4 4 4 5 2 2 4 2 3 2 3 5 4 5 4 4 1 2 3 4 4 4 5 3 5 5 4 5 4 3 5 5 2 4 1 4 2 4 5 3 5 3
+70
+6 5 1 3 3 5 5 5 3 5 3 4 2 6 5 5 1 2 1 3 5 4 6 1 1 5 5 5 5 5 6 6 5 1 1 5 3 5 4 5 3 5 2 4 3 1 2 5 6 3 6 3 4 4 5 3 5 5 3 3 6 5 2 1 3 5 6 5 4 5
+70
+5 5 4 6 6 3 4 1 1 1 3 6 6 1 5 5 1 5 3 5 6 3 5 3 4 6 1 5 2 6 3 5 6 5 3 5 1 3 4 4 6 5 2 1 6 5 4 5 5 4 5 6 3 5 2 4 3 3 3 3 3 6 3 5 5 3 5 4 5 5
+70
+47 25 56 22 41 75 1 47 39 28 48 52 43 50 56 2 50 41 35 6 36 23 60 67 73 3 30 52 31 8 60 34 10 55 35 24 28 75 45 5 37 49 24 1 59 7 6 20 77 4 5 67 5 25 18 61 29 54 41 69 68 16 33 48 65 18 22 34 70 2
+100
+30 108 8 61 17 56 54 29 50 72 9 97 67 36 75 110 88 99 75 93 19 44 39 45 72 53 115 106 1 20 25 118 117 51 89 72 116 33 76 26 6 47 35 55 45 89 78 69 56 78 58 95 34 9 1 14 2 9 8 64 12 85 117 49 40 44 8 2 89 36 12 56 89 18 38 63 3 57 29 110 25 46 98 20 119 52 114 107 23 11 105 35 119 55 82 115 56 85 68 28
+100
+2 4 4 3 1 3 4 5 5 2 3 2 4 4 4 4 4 2 4 1 5 3 5 3 2 3 4 4 2 2 3 5 2 4 2 4 3 4 4 2 4 5 4 5 4 4 4 5 5 3 3 4 4 1 2 1 5 2 4 4 4 1 2 4 1 2 1 4 5 2 4 5 5 2 4 5 1 4 3 5 4 5 2 3 2 5 4 4 5 3 2 4 4 2 2 5 5 1 2 2
+100
+4 5 2 6 6 1 5 2 1 1 3 5 3 3 5 6 5 6 3 5 5 5 1 1 6 3 5 5 6 5 4 4 6 6 1 5 1 5 1 4 5 5 2 5 5 5 5 3 6 3 2 5 5 6 6 3 5 3 1 2 5 1 4 6 4 6 1 3 4 3 6 1 1 5 2 3 1 5 3 5 6 5 5 5 5 3 5 6 2 6 5 4 3 5 5 3 5 6 5 6
+100
+3 6 5 1 6 5 6 1 6 5 5 6 6 5 5 6 3 5 3 5 6 6 3 5 5 6 3 3 3 2 4 6 4 4 5 4 5 6 6 5 1 5 2 3 3 3 5 3 6 5 4 3 6 5 6 6 5 5 5 2 3 5 1 6 1 6 3 3 6 5 2 6 3 2 3 3 5 1 6 5 5 6 1 3 4 3 3 5 2 1 1 6 1 5 6 4 6 5 4 5
+100
+68 88 9 43 34 56 114 65 16 83 42 2 120 94 45 100 44 110 47 34 16 112 24 108 22 78 88 120 65 69 108 81 36 53 82 15 67 56 82 95 74 95 14 77 29 97 68 103 32 109 88 115 80 107 15 116 81 78 82 17 98 100 47 103 30 41 55 72 100 24 11 19 105 12 64 102 100 22 21 106 50 8 66 14 20 58 43 14 78 82 21 5 1 81 89 65 35 20 87 47
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.class"
new file mode 100644
index 0000000..5399dfb
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.class"
new file mode 100644
index 0000000..d62fe15
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.class"
new file mode 100644
index 0000000..7b32fd3
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.class"
new file mode 100644
index 0000000..b37e5f7
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.class" differ
diff --git "a/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.class" "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.class"
new file mode 100644
index 0000000..819a5ab
Binary files /dev/null and "b/build/classes/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.class" differ
diff --git a/build/classes/KSY/testcase.txt b/build/classes/KSY/testcase.txt
new file mode 100644
index 0000000..8f86c79
--- /dev/null
+++ b/build/classes/KSY/testcase.txt
@@ -0,0 +1,5 @@
+4 4
+0111
+1111
+1111
+1110
\ No newline at end of file
diff --git "a/build/classes/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.class" "b/build/classes/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.class"
new file mode 100644
index 0000000..11b2cfb
Binary files /dev/null and "b/build/classes/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.class" differ
diff --git a/build/classes/S14940.class b/build/classes/S14940.class
new file mode 100644
index 0000000..a558568
Binary files /dev/null and b/build/classes/S14940.class differ
diff --git a/build/classes/S7576.class b/build/classes/S7576.class
new file mode 100644
index 0000000..b74e34c
Binary files /dev/null and b/build/classes/S7576.class differ
diff --git a/build/classes/knapsack$Thing.class b/build/classes/knapsack$Thing.class
new file mode 100644
index 0000000..b096c37
Binary files /dev/null and b/build/classes/knapsack$Thing.class differ
diff --git a/build/classes/knapsack.class b/build/classes/knapsack.class
new file mode 100644
index 0000000..1255c1a
Binary files /dev/null and b/build/classes/knapsack.class differ
diff --git a/dijkstra_input_edge.txt b/dijkstra_input_edge.txt
new file mode 100644
index 0000000..c1ace20
--- /dev/null
+++ b/dijkstra_input_edge.txt
@@ -0,0 +1,49 @@
+6 11
+0 5
+0 1 3
+0 2 5
+1 2 2
+1 3 6
+2 1 1
+2 3 4
+2 4 6
+3 4 2
+3 5 3
+4 0 3
+4 5 6
+
+output==> 12
+
+
+5 4
+0 3
+0 1 5
+1 2 2
+3 2 6
+4 3 10
+
+output==> -1
+
+
+
+10 17
+0 9
+0 1 4
+0 2 6
+1 3 9
+1 4 8
+2 1 3
+2 4 2
+2 5 3
+3 6 6
+4 3 2
+4 5 1
+4 6 3
+4 7 7
+5 7 4
+5 8 8
+6 9 13
+7 9 9
+8 9 4
+
+output ==>21
\ No newline at end of file
diff --git a/graph_input1.txt b/graph_input1.txt
new file mode 100644
index 0000000..fa2da89
--- /dev/null
+++ b/graph_input1.txt
@@ -0,0 +1,10 @@
+7
+8
+0 1
+0 2
+0 5
+0 6
+4 3
+5 3
+5 4
+6 4
\ No newline at end of file
diff --git a/graph_input2.txt b/graph_input2.txt
new file mode 100644
index 0000000..5d9cc0b
--- /dev/null
+++ b/graph_input2.txt
@@ -0,0 +1,10 @@
+7
+8
+0 1
+0 2
+1 3
+1 4
+2 4
+3 5
+4 5
+5 6
\ No newline at end of file
diff --git a/input.txt b/input.txt
new file mode 100644
index 0000000..b281fdf
--- /dev/null
+++ b/input.txt
@@ -0,0 +1,7 @@
+강민정 고정원 김다나 김다인 김시은 김신영 김진용 박근수 박정규 박종우 서재화 신우섭 엄태동 용상윤 이동재 이선재 이주연 이주희 이준범 이호진 정예원 조현우 제선명
+5
+M1 6 6
+M2 6 6
+M3 23 3
+M4 23 3
+M5 3 0
\ No newline at end of file
diff --git a/input1.txt b/input1.txt
new file mode 100644
index 0000000..a292fd6
--- /dev/null
+++ b/input1.txt
@@ -0,0 +1,3 @@
+3 2
+1 3
+2 3
diff --git "a/src/KSY/14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.py" "b/src/KSY/14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.py"
new file mode 100644
index 0000000..2ae1a44
--- /dev/null
+++ "b/src/KSY/14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.py"
@@ -0,0 +1 @@
+map = input()
\ No newline at end of file
diff --git "a/src/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.java" "b/src/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.java"
new file mode 100644
index 0000000..5000f19
--- /dev/null
+++ "b/src/KSY/Programmers_\353\254\270\354\236\220\354\227\264\352\265\220\354\247\221\355\225\251.java"
@@ -0,0 +1,49 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+//128,388 kb / 707 ms
+
+public class Programmers_문자열교집합 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int cnt=0;
+
+ Map map = new HashMap<>();
+
+ // 그룹1
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i set = new HashSet<>();
+ static Set> setset = new HashSet<>();
+ static List[] list;
+
+ public int main(String[] user_id, String[] banned_id) {
+ list = new ArrayList[banned_id.length];
+ for(int i=0; i();
+
+ for(int i=0; i> graph = new HashMap<>();
+ int[] before = new int[N+1];
+ Map> child = new HashMap<>();
+ for(int i=1; i<=N; i++) {
+ graph.put(i, new ArrayList<>());
+ child.put(i, new ArrayList<>());
+ }
+
+ // 건물 짓는 비용
+ int[] costs = new int[N];
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i que = new ArrayDeque();
+ for(int i=1; i<=N; i++) {
+ if(before[i] == 0) {
+ que.offer(i);
+ }
+ }
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ after[]
+
+ }
+
+ int W = Integer.parseInt(br.readLine()); // 승리를 위해 지어야 할 건물
+
+
+ }
+
+ }
+
+}
+class Building{
+ int time, totalTime;
+ Building(int time, int totalTime){
+ this.time = time, this.totalTime = totalTime;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S1043_\352\261\260\354\247\223\353\247\220.java" "b/src/KSY/S1043_\352\261\260\354\247\223\353\247\220.java"
new file mode 100644
index 0000000..de81fb1
--- /dev/null
+++ "b/src/KSY/S1043_\352\261\260\354\247\223\353\247\220.java"
@@ -0,0 +1,104 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//11752KB/ 80ms
+
+public class S1043_거짓말 {
+
+ static int[] parents;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+ int answer=0;
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken()); // 사람 수
+ int M = Integer.parseInt(st.nextToken()); // 파티 수
+ parents = new int[N+1]; // 속한 파티 집합
+ for(int i=1; i<=N; i++) {
+ parents[i] = i;
+ }
+
+ st = new StringTokenizer(br.readLine());
+ int K = Integer.parseInt(st.nextToken()); // 거짓말 아는 사람 수
+ boolean[] knows = new boolean[N+1];
+ for (int k = 0; k < K; k++) {
+ knows[ Integer.parseInt(st.nextToken())] = true; // 거짓말을 아는 사람 표시
+ }
+
+ List> parties = new ArrayList<>(); // 파티 리스트
+ for (int i = 0; i < M; i++) { // 파티 입력 받기
+ st = new StringTokenizer(br.readLine());
+ int cnt = Integer.parseInt(st.nextToken()); // 파티 인원
+
+ List party = new ArrayList<>();
+ for (int j = 0; j < cnt; j++) {
+ int temp = Integer.parseInt(st.nextToken());
+ party.add(temp);
+
+ if(j < 1) // 1개 이하
+ continue;
+
+ union(party.get(j-1), temp); // 둘이 같은 집단에 속해있다
+ }
+ parties.add(party);
+ }
+
+ for(int i=0; i> alph; // 필요한 알파벳 모음의 set
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ K = Integer.parseInt(st.nextToken()) - 5; // 필수 문자 제외 가르칠 수 있는 문자
+
+ alpha = new boolean[26];
+ alpha[0] = true; // a
+ alpha['c'-'a'] = true; // c
+ alpha['n'-'a'] = true; // n
+ alpha['t'-'a'] = true; // t
+ alpha['i'-'a'] = true; // i
+// System.out.println(Arrays.toString(alpha));
+
+
+ alph = new HashSet<>();
+ for(int i=0; i list = new ArrayList<>();
+ for(int j=3; j answer)
+ answer = ans;
+ return;
+ }
+
+ for(int i=idx; i<26; i++) {
+ if(!alpha[i]) { //선택하지 않은 알파벳이라면
+ alpha[i] = true;
+ DFS(cnt+1, i);
+ alpha[i] = false;
+ }
+ }
+
+ }
+
+ private static int checkword() {
+ int ans = 0;
+ for(List temp: alph) {
+ boolean flag = false;
+ for(int idx:temp) {
+ if(!alpha[idx]) { // 하나라도 없다면 불가능
+ flag = true;
+ break;
+ }
+ }
+ if(!flag)
+ ans++;
+ }
+ return ans;
+ }
+}
diff --git a/src/KSY/S1068.java b/src/KSY/S1068.java
new file mode 100644
index 0000000..18cb2d2
--- /dev/null
+++ b/src/KSY/S1068.java
@@ -0,0 +1,52 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+public class S1068 { // 트리
+ static Map> graph;
+ static int answer=0;
+ static int removeNode;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int N = Integer.parseInt(br.readLine());
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ graph = new HashMap<>();
+ for(int v=0; v());
+ }
+
+ int rootNode=0;
+ for(int v=0; v> graph;
+ static boolean[] checked;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+ int N = Integer.parseInt(br.readLine());
+ answer = new int[N+1];
+ checked = new boolean[N+1];
+
+ //node 설정(인접 리스트)
+ graph = new HashMap<>();
+ for(int i=1; i<=N; i++) {
+ graph.put(i, new ArrayList<>());
+ }
+
+ for(int i=0; i decreasing = new ArrayList<>();
+ static int[] answer;
+ static boolean[] visited = new boolean[10];
+ static StringBuilder sb;
+
+ public static void main(String[] args) throws Exception { // 메인 메서드 시작
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 입력 빠르게 읽기
+ sb = new StringBuilder();
+
+ int n = Integer.parseInt(br.readLine());
+
+ if (n >= 1024) {
+ System.out.println(-1);
+ return;
+ }
+
+ // 자리수 별로 조합 만들기
+ for (int i=1; i<=10; i++) {
+ answer = new int[i];
+ dfs(0, 0, i);
+ }
+
+ Collections.sort(decreasing);
+ System.out.println(decreasing.get(n-1));
+
+ }
+
+ // idx 이전 자리수의 값 - 여기부터 시작해서 큰수만 추가
+ // cnt 현재까지 채운 자리수
+ // lim 채워야할 자리수
+ static void dfs(int idx, int cnt, int lim) {
+
+ if (cnt == lim) {
+ String str = "";
+ for(int i=lim-1; i>=0; i--) {
+ str += answer[i];
+ }
+ decreasing.add(Long.parseLong(str));
+ return;
+ }
+
+ for (int i=idx; i<10; i++) {
+ if (!visited[i]) {
+ visited[i] = true;
+ answer[cnt] = i;
+ dfs(i+1, cnt+1, lim);
+ visited[i] = false;
+ }
+
+ }
+
+
+ }
+
+}
\ No newline at end of file
diff --git "a/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java" "b/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java"
new file mode 100644
index 0000000..ccb1c38
--- /dev/null
+++ "b/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602.java"
@@ -0,0 +1,103 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+import java.util.*;
+
+//51104KB/ 508ms
+
+public class S11779_최소비용구하기2 {
+
+ static ArrayList[] list; // 각 마을에 연결 된 다른 마을 연결
+ static int n, m, start, end;
+ static int[] dist;
+ static int[] route; // 직전 노드 저장
+ static boolean[] visited;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ n = Integer.parseInt(br.readLine()); // 마을 수
+ m = Integer.parseInt(br.readLine()); // 노선 수
+
+ list = new ArrayList[n + 1];
+ for(int i = 1; i <= n; i++) {
+ list[i] = new ArrayList<>();
+ }
+
+ for(int i = 0; i < m; i++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int s = Integer.parseInt(st.nextToken());
+ int e = Integer.parseInt(st.nextToken());
+ int c = Integer.parseInt(st.nextToken());
+ list[s].add(new Node(e, c)); // s에서 e로 가는 c 비용 연결
+ }
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ start = Integer.parseInt(st.nextToken()); // 시작 노드
+ end = Integer.parseInt(st.nextToken()); // 끝 노드
+
+ dist = new int[n + 1]; // start부터 각 i까지 최소 비용
+ route = new int[n + 1]; // i에 도착하기 직전 마을
+ Arrays.fill(dist, 1000000001); // 무한수로 모든 배열 업데이
+ visited = new boolean[n + 1]; // 방문 표시
+ dijkstra(); // 다익스트라(특정 위치에서 각 노드로의 최소 거리) vs 플로이드-워샬
+
+ sb.append(dist[end]).append("\n");
+
+ ArrayList routes = new ArrayList<>();
+ int current = end;
+ while(current != 0) {
+ routes.add(current);
+ current = route[current];
+ }
+ sb.append(routes.size()).append("\n");
+ for(int i = routes.size() - 1; i >= 0; i--) {
+ sb.append(routes.get(i) + " ");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+ public static void dijkstra() {
+ PriorityQueue q = new PriorityQueue<>(); // 쁘리아라리큐
+ q.add(new Node(start, 0)); // 시작 노드
+ dist[start] = 0; // 시작 노드 거리 초기화
+ route[start] = 0; // 시작 노드 이전 초기화
+
+ while(!q.isEmpty()) {
+ Node current = q.poll();
+
+ if(!visited[current.e]) visited[current.e] = true; // 방문하지 않았다면 방문 표시 후 탐색
+ else continue;
+
+ for(int i = 0; i < list[current.e].size(); i++) { // 연결된 마을 탐색
+ Node next = list[current.e].get(i); // 연결 된 마을
+ if(dist[next.e] > dist[current.e] + next.cost) { // 업데이트 할 위치 비용 < '비용이 현재 위치 + 다음 비용'
+ dist[next.e] = dist[current.e] + next.cost; // 값 업데이트
+ q.offer(new Node(next.e, dist[next.e])); // 큐 삽입
+ route[next.e] = current.e; // 부모 업데이트
+ }
+ }
+ }
+ }
+
+ public static class Node implements Comparable {
+ int e; // 도착 노드
+ int cost;
+
+ public Node(int e, int cost) {
+ this.e = e;
+ this.cost = cost;
+ }
+
+ @Override
+ public int compareTo(Node n) { // 비용 기준으로 쁘리아라리큐 정렬
+ return this.cost - n.cost;
+ }
+ }
+}
diff --git "a/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602_Re.java" "b/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602_Re.java"
new file mode 100644
index 0000000..c0c27ed
--- /dev/null
+++ "b/src/KSY/S11779_\354\265\234\354\206\214\353\271\204\354\232\251\352\265\254\355\225\230\352\270\2602_Re.java"
@@ -0,0 +1,58 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+public class S11779_최소비용구하기2_Re {
+
+// static Map> graph = new HashMap<>();
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine()); // 도시
+ int M = Integer.parseInt(br.readLine()); // 버스
+ int totalCost = 0;
+
+ int[][] adjMatrix = new int[N+1][N+1];
+ int INF = Integer.MAX_VALUE;
+ for(int i=1; i<=N; i++)
+ Arrays.fill(adjMatrix[i], INF);
+
+// boolean[] visited = new boolean[N+1];
+// for(int i=1; i<=N; i++)
+// graph.put(i, new ArrayList<>());
+
+ for(int i=0; i max)
+ max = temp;
+ }
+
+ sb.append(max);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git a/src/KSY/S1240.java b/src/KSY/S1240.java
new file mode 100644
index 0000000..001be5f
--- /dev/null
+++ b/src/KSY/S1240.java
@@ -0,0 +1,56 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S1240 {
+ static boolean[] visited;
+ static Map> graph;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ graph = new HashMap<>();
+ visited = new boolean[N+1];
+
+ for(int i=0; i new ArrayList<>()).add(new int[] {b, dist});
+ graph.computeIfAbsent(b, k -> new ArrayList<>()).add(new int[] {a, dist});
+ }
+
+ for(int test=0; test> edges = new HashMap<>(); // 각 노드 별 연결된 노드를 List로 저장
+
+ Stack stack = new Stack<>();
+ stack.push(V); // DFS
+
+ Queue queue = new LinkedList<>();
+ queue.add(V); // BFS
+
+ // DFS
+ for (int i = 0; i < M; i++) {
+ st = new StringTokenizer(br.readLine());
+ int v1 = Integer.parseInt(st.nextToken());
+ int v2 = Integer.parseInt(st.nextToken());
+ edges.computeIfAbsent(v1, k -> new ArrayList<>()).add(v2); // v1의 key값이 있으면 가져오고 없으면 생성하여 삽입
+ edges.computeIfAbsent(v2, k -> new ArrayList<>()).add(v1);
+ }
+
+ StringBuilder answer = new StringBuilder();
+ Set visited = new HashSet<>(); // 방문한 노드 표시를 위한 HashSet
+ while (!stack.isEmpty()) {
+ int s = stack.pop();
+ if (!visited.contains(s)) {
+ answer.append(s).append(" ");
+ visited.add(s);
+
+ List neighbors = edges.get(s); // 방문한 노드와 인접한 노드들 가져오기
+ if (neighbors != null) {
+ Collections.sort(neighbors, Collections.reverseOrder()); // 노드가 큰 것부터 삽입하여 작은 값이 먼저 출력 될 수 있게 함
+ for (int _s : neighbors) {
+ if (_s != 0) {
+ stack.push(_s);
+ }
+ }
+ }
+ }
+ }
+ System.out.println(answer);
+
+ answer = new StringBuilder();
+ visited.clear(); // 방문한 노드 초기화
+ while (!queue.isEmpty()) {
+ int q = queue.poll();
+ if (!visited.contains(q)) { // 방문하지 않은 노드라면
+ answer.append(q).append(" ");
+ visited.add(q);
+
+ List neighbors = edges.get(q); // 현재 방문한 노드와 인접한 노드 List
+ if (neighbors != null) {
+ Collections.sort(neighbors);
+ for (int _q : neighbors) {
+ queue.add(_q);
+ }
+ }
+ }
+ }
+ System.out.println(answer);
+ }
+}
diff --git "a/src/KSY/S14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.java" "b/src/KSY/S14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.java"
new file mode 100644
index 0000000..d394684
--- /dev/null
+++ "b/src/KSY/S14499_\354\243\274\354\202\254\354\234\204\352\265\264\353\246\254\352\270\260.java"
@@ -0,0 +1,71 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S14499_주사위굴리기 {
+
+ // 방향 (1:동, 2:서, 3:북, 4:남)
+ static int[] dr = new int[] {0, 0, -1, 1};
+ static int[] dc = new int[] {1, -1, 0, 0};
+
+ // 주사위 위치
+ static List points = new ArrayList<>();
+ // 각 주사위 위치별 방향 숫자
+ int[] east = new int[] {4, };
+ int[] west = new int[] {};
+ int[] north = new int[] {};
+ int[] south = new int[] {};
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ points.add(new Point7(0, 0)); // 더미
+ points.add(new Point7(1, 1));
+ points.add(new Point7(0, 1));
+ points.add(new Point7(1, 2));
+ points.add(new Point7(1, 0));
+ points.add(new Point7(2, 1));
+ points.add(new Point7(3, 1));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int y = Integer.parseInt(st.nextToken());
+ int x = Integer.parseInt(st.nextToken());
+ int K = Integer.parseInt(st.nextToken());
+
+ //dice
+ int[][] dice = new int[4][3];
+ // dice의 상단/하단
+ Point7 up = points.get(1);
+ Point7 down = points.get(6);
+
+ //map
+ int[][] map = new int[N][M];
+ for(int i=0; i que = new ArrayDeque<>();
+ que.offer(new int[][] {{1, 1, 1, 1}}); // 도형1
+ que.offer(new int[][] {{1, 1}, {1, 1}}); // 도형2
+ que.offer(new int[][] {{1, 0}, {1, 0}, {1, 1}}); // 도형3
+ que.offer(new int[][] {{1, 0}, {1, 1}, {0, 1}}); // 도형4
+ que.offer(new int[][] {{0, 1}, {1, 1}, {1, 0}}); // 도형4-2
+ que.offer(new int[][] {{0, 1}, {0, 1}, {1, 1}}); // 도형3-2
+ que.offer(new int[][] {{1, 1, 1}, {0, 1, 0}}); // 도형5
+ que.offer(new int[][] {{0, 1, 0}, {1, 1, 1}}); // 도형5
+
+ while(!que.isEmpty()) {
+ int[][] curr = que.poll();
+ check(curr);
+ direc4(curr, 0);
+ }
+
+ sb.append(answer);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+
+ public static void direc4(int[][] miro, int d) {
+ if(d < 3) {
+ int[][] newmiro = new int[miro[0].length][miro.length];// 90도 돌린 도형
+ for(int i=0; i=0; j--) {
+ newmiro[i][miro.length-j-1] = miro[j][i];
+ }
+ }
+ check(newmiro);
+ direc4(newmiro, d+1);
+ }
+ }
+
+ public static void check(int[][] miro) {
+ for(int i=0; i<=N-miro.length; i++) {
+ for(int j=0; j<=M-miro[0].length; j++) {
+ int temp = 0;
+
+ for(int k=0; k=0; i--) {
+
+ }
+
+ }
+}
+
+class Node implements Comparable{
+ int t, p;
+ Node(int t, int p) {
+ this.t = t; this.p = p;
+ }
+ @Override
+ public int compareTo(Node o) {
+ if(t > o.t) return 1;
+ else if(t < o.t) return -1;
+ return 0;
+ }
+ @Override
+ public String toString() {
+ return t + " " + p;
+ }
+
+
+}
diff --git "a/src/KSY/S14502_\354\227\260\352\265\254\354\206\214.java" "b/src/KSY/S14502_\354\227\260\352\265\254\354\206\214.java"
new file mode 100644
index 0000000..33aa3b1
--- /dev/null
+++ "b/src/KSY/S14502_\354\227\260\352\265\254\354\206\214.java"
@@ -0,0 +1,135 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//280624KB/ 508ms
+
+public class S14502_연구소 {
+ static int index, N, M;
+ static int[] dr = new int[] {1, -1, 0, 0};
+ static int[] dc = new int[] {0, 0, 1, -1};
+
+ public static void main(String[] args) throws NumberFormatException, IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+ int[][] map = new int[N][M]; // 후보가 될 수 있는 포인트 전부
+
+ //map 입력
+ List points = new ArrayList<>();
+ Point[] candidates = new Point[N*M];
+ index = 0; // 후보 위치 개수
+ int answer = 0;
+
+ for(int i=0 ;i= index-3) p[idx--] =1;
+ do {
+ int tempAnswer = 0;
+
+ //map copy
+ int[][] tempMap = new int[N][M];
+ for(int m=0; m 0 && p[i-1] >= p[i]) i--;
+ if(i == 0) return false;
+
+ int j = index-1;
+ while(p[i-1] >= p[j]) j--;
+ swap(p, i-1, j);
+
+ int k = index-1;
+ while(k > i)
+ swap(p, k--, i++);
+ return true;
+ }
+
+ private static void swap(int[] p, int i, int j) {
+ int temp = p[i];
+ p[i] = p[j];
+ p[j] = temp;
+ }
+
+ private static void BFS(int[][] map, int r, int c ) {
+ Queue que = new ArrayDeque<>();
+ que.offer(new Point(r, c));
+ while(!que.isEmpty()) {
+ Point curr = que.poll();
+ for(int d=0; d<4; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ if(-1 < row && row < N && -1 < col && col < M && map[row][col] == 0) {
+ map[row][col] = 2;
+ que.offer(new Point(row, col));
+ }
+ }
+ }
+ }
+
+}
+
+class Point{
+ int r, c;
+ Point(int r, int c){
+ this.r = r; this.c = c;
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/S1525.java b/src/KSY/S1525.java
new file mode 100644
index 0000000..ef8253b
--- /dev/null
+++ b/src/KSY/S1525.java
@@ -0,0 +1,10 @@
+package KSY;
+
+public class S1525 {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/src/KSY/S16401.java b/src/KSY/S16401.java
new file mode 100644
index 0000000..f846e50
--- /dev/null
+++ b/src/KSY/S16401.java
@@ -0,0 +1,44 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S16401 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ int M = Integer.parseInt(st.nextToken());
+ int N = Integer.parseInt(st.nextToken());
+ int[] candies = new int[N];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i= mid) {
+ cnt += candies[i]/mid; //해당 캔디로 만들 수 있는 모든 개수
+ }
+ }
+
+ if(cnt >= M) { // 캔디 크기 늘리기
+ values[0] = mid+1;
+ answer = mid;
+ } else { // 크기 줄이기
+ values[1] = mid-1;
+ }
+
+ }
+ System.out.println(answer);
+ }
+
+}
diff --git "a/src/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.java" "b/src/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.java"
new file mode 100644
index 0000000..042e1cb
--- /dev/null
+++ "b/src/KSY/S1655_\352\260\200\354\232\264\353\215\260\353\245\274\353\247\220\355\225\264\354\232\224.java"
@@ -0,0 +1,47 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+// 35140KB/ 392ms
+
+public class S1655_가운데를말해요 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ PriorityQueue minHeap = new PriorityQueue<>();
+ PriorityQueue maxHeap = new PriorityQueue<>(Collections.reverseOrder());
+
+ int N = Integer.parseInt(br.readLine());
+ maxHeap.offer(Integer.parseInt(br.readLine())); // 첫 숫자
+ sb.append(maxHeap.peek()).append("\n");
+
+ for(int i=0; i maxHeap.peek()) {
+ minHeap.offer(number);
+ if(maxHeap.size() < minHeap.size()) {
+ maxHeap.offer(minHeap.poll());
+ }
+ } else {
+ maxHeap.offer(number);
+ if(maxHeap.size() - minHeap.size() > 1) {
+ minHeap.offer(maxHeap.poll());
+ }
+ }
+
+
+ sb.append(maxHeap.peek()).append("\n");
+ }
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
diff --git "a/src/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.java" "b/src/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.java"
new file mode 100644
index 0000000..a9cb44e
--- /dev/null
+++ "b/src/KSY/S16928_\353\261\200\352\263\274\354\202\254\353\213\244\353\246\254\352\262\214\354\236\204.java"
@@ -0,0 +1,89 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+//12216KB/ 88ms
+
+public class S16928_뱀과사다리게임 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int[] map = new int[101];
+ Arrays.fill(map, 100);
+ map[1] = 0;
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken()); // 사다리 수
+ int M = Integer.parseInt(st.nextToken()); // 뱀의 수
+
+ int[] ladders = new int[101];
+ int[] snacks = new int[101];
+ int answer = 100; // 이동 횟수(최악의 경우로 초기화)
+
+ for (int i = 0; i < N; i++) { // 사다리
+ st = new StringTokenizer(br.readLine());
+ int from = Integer.parseInt(st.nextToken());
+ int to = Integer.parseInt(st.nextToken());
+ ladders[from] = to;
+ }
+
+ for (int i = 0; i < M; i++) { // 뱀
+ st = new StringTokenizer(br.readLine());
+ int from = Integer.parseInt(st.nextToken());
+ int to = Integer.parseInt(st.nextToken());
+ snacks[from] = to;
+ }
+
+ Queue que = new ArrayDeque<>();
+ que.offer(new Pos(0, 1));
+
+ while (!que.isEmpty()) {
+ Pos curr = que.poll();
+ if (curr.cnt > map[curr.pos])
+ continue;
+ map[curr.pos] = curr.cnt;
+
+ if(curr.pos == 100) // 안 하면 메모리 초과
+ break;
+
+ for (int d = 1; d <= 6; d++) {
+ if (curr.pos + d < 101) {
+ if (curr.cnt + 1 < map[curr.pos + d]) {
+ int point = curr.pos + d;
+ Pos pos = new Pos(curr.cnt + 1, point);
+
+ int ladder = ladders[curr.pos + d];
+ int snack = snacks[curr.pos + d];
+
+ if (ladder != 0) { // 사다리가 있다면
+ point = ladder;
+ }
+
+ if (snack != 0) { // 뱀이 있다면 (else-if -> if : 12% -> 22%)
+ point = snack;
+ }
+
+ map[point] = curr.cnt + 1;
+ pos.pos = point;
+ que.offer(pos);
+ }
+ }
+ }
+ }
+ System.out.println(map[100]);
+ }
+
+}
+
+class Pos {
+ int cnt, pos;
+
+ Pos(int cnt, int pos) {
+ this.cnt = cnt;
+ this.pos = pos;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.java" "b/src/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.java"
new file mode 100644
index 0000000..216fcc2
--- /dev/null
+++ "b/src/KSY/S16947_\354\204\234\354\232\270\354\247\200\355\225\230\354\262\2402\355\230\270\354\204\240.java"
@@ -0,0 +1,81 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//302012KB/ 1156ms
+
+public class S16947_서울지하철2호선 {
+
+ static Map> graph = new HashMap<>();
+ static boolean[] cycle;
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine());
+ for (int v = 1; v <= N; v++) {
+ graph.put(v, new ArrayList<>());
+ }
+
+ for (int i = 0; i < N; i++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int a = Integer.parseInt(st.nextToken());
+ int b = Integer.parseInt(st.nextToken());
+ graph.get(a).add(b);
+ graph.get(b).add(a);
+ }
+
+ // 각 역이 순환선에 포함되는지 판별
+ cycle = new boolean[N + 1];
+ for (int i = 1; i <= N; i++) {
+ if (checkCycle(i, i, i)) // 순환선을 찾았다면
+ break;
+ cycle = new boolean[N + 1];
+ }
+ System.out.println(Arrays.toString(cycle));
+
+ for(int v=1; v<=N; v++) { // 각 역에 대해서 순환선과의 거리 BFS
+ Queue que = new ArrayDeque<>();
+ que.offer(new int[] {v, 0}); //
+ boolean[] visited = new boolean[N+1];
+ while(!que.isEmpty()) {
+ int[] curr = que.poll();
+ if(cycle[curr[0]]){ // cycle 찾음
+ sb.append(curr[1]).append(" ");
+ break;
+ }
+ for(int ver: graph.get(curr[0])) {
+ if(!visited[ver]) {
+ visited[ver] = true;
+ que.offer(new int[] {ver, curr[1]+1});
+ }
+ }
+ }
+ }
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+// for(int v=1; v<=N; v++)
+// System.out.println(v + " " + graph.get(v).toString());
+ }
+
+ private static boolean checkCycle(int prev, int now, int start) { // DFS로 순환 확인
+ cycle[now] = true;
+ for (int v : graph.get(now)) {
+ if (!cycle[v]) {
+ if (checkCycle(now, v, start))
+ return true;
+ } else if (v != prev && v == start) // cycle 찾음!
+ return true;
+ }
+ cycle[now] = false;
+ return false;
+ }
+
+}
diff --git "a/src/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.java" "b/src/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.java"
new file mode 100644
index 0000000..9ad7bcf
--- /dev/null
+++ "b/src/KSY/S16954_\354\233\200\354\247\201\354\235\264\353\212\224\353\257\270\353\241\234\355\203\210\354\266\234.java"
@@ -0,0 +1,95 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+// 964940KB/ 1520ms
+
+public class S16954_움직이는미로탈출 {
+ static int[] dr = new int[] {1, -1, 0, 0, 0, 1, 1, -1, -1}; // down, up, right, left, stay, ...대각선...
+ static int[] dc = new int[] {0, 0, 1, -1, 0, 1, -1, -1, 1};
+
+
+ public static void main(String[] args) throws NumberFormatException, IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ char[][] map = new char[8][8]; // map
+// boolean[][] visited = new boolean[8][8]; // visited
+ List walls = new ArrayList<>();
+
+ for(int i=0; i<8; i++) {
+ String line = br.readLine();
+ for(int j=0; j<8; j++) {
+ map[i][j] = line.charAt(j);
+ if(map[i][j] == '#') {
+ walls.add(new Wall(i, j)); // 벽 정보 입력
+ }
+ }
+ }
+
+ List maps = new ArrayList<>(); // 9개의 map 정보 저장
+ maps.add(map); // 첫번째 맵
+ for(int i=1; i<=8; i++) {
+ char[][] preMap = maps.get(i-1);
+ char[][] temp = new char[8][8];
+
+ //map 복사
+ Arrays.fill(temp[0], '.');
+ for(int j=0; j<7; j++) {
+ temp[j+1] = preMap[j].clone();
+ }
+ maps.add(temp);
+ }
+
+ Queue que = new ArrayDeque<>();
+ que.offer(new int[] {7, 0, 0}); // r, c, map no.
+ while(!que.isEmpty()) {
+ int[] curr = que.poll();
+ int mapIdx = curr[2];
+ if(curr[2] > 8)
+ mapIdx = 8;
+ if(curr[0] == 0 && curr[1] == 7) {
+ System.out.println(1);;
+ return;
+ }
+ if(maps.get(mapIdx)[curr[0]][curr[1]] == '#')
+ continue;
+
+ for(int d=0; d<9; d++) {
+ int row = curr[0] + dr[d];
+ int col = curr[1] + dc[d];
+ if(-1 < row && row < 8 && -1 < col && col <8 && maps.get(mapIdx)[row][col] == '.') { //&& !visited[row][col]
+// visited[row][col] = true;
+ que.offer(new int[] {row, col, mapIdx+1});
+ }
+
+ }
+// visited[7][0] = true;
+// // move wall
+// for(int w=walls.size()-1; w>= 0 ; w--) {
+// Wall wall = walls.get(w);
+// if(wall.r + 1 > 7)
+// walls.remove(w);
+// else {
+// map[wall.r][wall.c] = '.';
+// wall.r++;
+// map[wall.r][wall.c] = '#';
+// }
+//
+// }
+ }
+ System.out.println(0);
+
+ }
+
+}
+
+class Wall{
+ int r, c;
+ Wall(int r, int c){
+ this.r = r; this.c = c;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S1756_\355\224\274\354\236\220\352\265\275\352\270\260.java" "b/src/KSY/S1756_\355\224\274\354\236\220\352\265\275\352\270\260.java"
new file mode 100644
index 0000000..76bedcd
--- /dev/null
+++ "b/src/KSY/S1756_\355\224\274\354\236\220\352\265\275\352\270\260.java"
@@ -0,0 +1,38 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S1756_피자굽기 {
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb =new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int D = Integer.parseInt(st.nextToken()); // 오븐 깊이
+ int N = Integer.parseInt(st.nextToken()); // 반죽의 개수
+
+ int[] oven = new int[D];
+
+ st = new StringTokenizer(br.readLine());
+ for(int d=0; d=0; j--){
+
+ }
+ }
+
+
+
+ }
+
+}
diff --git "a/src/KSY/S1766_\353\254\270\354\240\234\354\247\221.java" "b/src/KSY/S1766_\353\254\270\354\240\234\354\247\221.java"
new file mode 100644
index 0000000..9e982f1
--- /dev/null
+++ "b/src/KSY/S1766_\353\254\270\354\240\234\354\247\221.java"
@@ -0,0 +1,56 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+// 52556KB/ 516ms
+
+public class S1766_문제집 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+
+ Map> graph = new HashMap<>(); // 가야하는 애들
+ for(int i=1; i<=N; i++) {
+ graph.put(i, new ArrayList<>());
+ }
+
+ int[] costs = new int[N+1];
+ for(int i=0; i que = new PriorityQueue<>();
+ for(int i=1; i<=N; i++) {
+ if(costs[i] == 0) {
+ que.offer(i);
+ }
+ }
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ sb.append(curr).append(" ");
+ for(int c : graph.get(curr)) {
+ costs[c]--;
+ if(costs[c] == 0) {
+ que.offer(c);
+ }
+ }
+ }
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
\ No newline at end of file
diff --git "a/src/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.java" "b/src/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.java"
new file mode 100644
index 0000000..93694f6
--- /dev/null
+++ "b/src/KSY/S18111_\353\247\210\354\235\270\355\201\254\353\236\230\355\224\204\355\212\270.java"
@@ -0,0 +1,66 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//35692KB/ 624ms
+
+public class S18111_마인크래프트 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int B = Integer.parseInt(st.nextToken());
+ int[][] map = new int[N][M];
+ int answer[] = new int[] {Integer.MAX_VALUE, 0}; // 시간
+ int max=0, min=Integer.MAX_VALUE;
+
+ // map
+ for(int i=0; i map[i][j])
+ min = map[i][j];
+ }
+ }
+ //최대값으로부터 차이값의 합이 가지고 있는
+
+ for(int ans=min; ans<=max; ans++) { // 최대값부터 하나씩 내려오며 확인
+ int block = B, time=0;
+ for(int i=0; i 0) {
+ block -= gap;
+ time += gap;
+ }
+ }
+ }
+ if(block < 0) // 가진 블록보다 많이 사용 함
+ continue;
+
+ if(answer[0] >= time) {
+ answer[0] = time;
+ answer[1] = ans;
+ }
+ }
+ sb.append(answer[0]).append(" ").append(answer[1]);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+
+ }
+
+}
diff --git "a/src/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.java" "b/src/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.java"
new file mode 100644
index 0000000..fe5da99
--- /dev/null
+++ "b/src/KSY/S18428_\352\260\220\354\213\234\355\224\274\355\225\230\352\270\260.java"
@@ -0,0 +1,136 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S18428_감시피하기 {
+
+ static char[][] map;
+ static int candi_length, N;
+ static List teachers;
+ static Queue que ;
+
+ static int[] dr = new int[] {1, -1, 0, 0};
+ static int[] dc = new int[] {0, 0, 1, -1};
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ N = Integer.parseInt(br.readLine());
+ List candidate = new ArrayList();
+ teachers = new ArrayList();
+
+ map = new char[N][N];
+ for(int i=0; i=candi_length-3) p[cnt--] = 1;
+ boolean answer = false;
+
+ do {
+ // map copy
+ char[][] temp = new char[N][N];
+ for(int m=0; m();
+ boolean[][] visited = new boolean[N][N];
+ for(int i=0; i 0 && p[i-1]>=p[i]) i--;
+ if(i == 0)
+ return false;
+
+ int j = candi_length-1;
+ while(p[i-1] >= p[j]) j--;
+ swap(p, i-1, j);
+
+ int k=candi_length-1;
+ while(k>i)
+ swap(p, i++, k--);
+ return true;
+ }
+
+ public static void swap(int[] p, int i, int j) {
+ int temp = p[i];
+ p[i] = p[j];
+ p[j] = temp;
+ }
+
+}
+
+class Position{
+ int r, c;
+ Position(int r, int c){
+ this.r = r; this.c = c;
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/S18809_Gaaaaaaaaaarden.java b/src/KSY/S18809_Gaaaaaaaaaarden.java
new file mode 100644
index 0000000..2638a90
--- /dev/null
+++ b/src/KSY/S18809_Gaaaaaaaaaarden.java
@@ -0,0 +1,200 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//295056KB/ 876ms
+
+public class S18809_Gaaaaaaaaaarden {
+
+ static List able = new ArrayList<>();
+ static int[] dr = new int[] { 0, 1, 0, -1 };
+ static int[] dc = new int[] { 1, 0, -1, 0 };
+ static int N, M, map[][];
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+ int G = Integer.parseInt(st.nextToken()); // 초록 배양액
+ int R = Integer.parseInt(st.nextToken()); // 빨간 배양액
+ int answer = 0;
+
+ // 0: 호수, 1: 배양액 뿌릴 수 없는 땅, 2: 배양액 뿌릴 수 있는 땅
+ map = new int[N][M];
+ for (int i = 0; i < N; i++) {
+ st = new StringTokenizer(br.readLine());
+ for (int j = 0; j < M; j++) {
+ map[i][j] = Integer.parseInt(st.nextToken());
+ if (map[i][j] == 2) {
+ able.add(new Cell(i, j, 0));
+ }
+ }
+ }
+
+ int p[] = new int[able.size()];
+ int cnt = able.size() - 1;
+ while (cnt >= able.size() - (G + R))
+ p[cnt--] = 1;
+ do { // 배양액 놓을 위치 선정
+
+ int[] selected = new int[G + R]; // 선택된 위치의 able 인덱스 번호들
+ int idx = 0;
+ for (int i = 0; i < able.size(); i++) {
+ if (p[i] == 1) {
+ selected[idx++] = i;
+ }
+ }
+
+ int p2[] = new int[G + R]; // Green vs Red
+ int cnt2 = p2.length - 1;
+ while (cnt2 >= p2.length - G)
+ p2[cnt2--] = 1;
+
+ do { // 선정된 위치 기반 초록색(1), 빨간색(0) 분리
+
+ // map 분리
+ int[][] greenmap = new int[N][M];
+ int[][] redmap = new int[N][M];
+
+ Queue que = new ArrayDeque<>();
+
+ for (int i = 0; i < p2.length; i++) {
+ Cell c = able.get(selected[i]);
+ Cell newCell = null; // 다음 상황을 위해서 객체 새로 생성
+ if (p2[i] == 1) { // 초록색이라면
+ greenmap[c.r][c.c] = -1;
+ newCell = new Cell(c.r, c.c, c.cnt, 'g');
+ } else { // 빨강색이라면
+ redmap[c.r][c.c] = -1;
+ newCell = new Cell(c.r, c.c, c.cnt, 'r');
+ }
+ que.offer(newCell);
+ }
+// //tempmap 출력
+// System.out.println("before");
+// for(int i=0; i answer) {
+ answer = answertemp;
+ }
+
+ } while (NP(p2));
+
+ } while (NP(p));
+ sb.append(answer);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+ public static int BFS(int[][] greenmap, int[][] redmap, Queue que) {
+ int[][] tempmap = new int[N][M]; // 꽃이 피는 영역 확인용
+ while (!que.isEmpty()) { // que에 값이 있을 때까지
+ Cell curr = que.poll();
+ // 해당 cell이 이미 꽃을 피운 곳이라면 탐색 중지
+ if (tempmap[curr.r][curr.c] == 1)
+ continue;
+
+ for (int d = 0; d < 4; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ if (-1 < row && row < N && -1 < col && col < M && map[row][col] != 0) { // 범위를 벗어나지 않고 호수가 아님
+ if (curr.color == 'g') { // 초록색일 때
+ if (redmap[row][col] == curr.cnt + 1) { // 배양
+ tempmap[row][col] = 1;
+ } else if (greenmap[row][col] == 0 && redmap[row][col] == 0) { // 방문하지 않은곳이라면 ( 3% ->
+ greenmap[row][col] = curr.cnt + 1;
+ Cell c = new Cell(row, col, curr.cnt + 1);
+ c.color = 'g';
+ que.offer(c);
+ }
+ } else if (curr.color == 'r') { // 빨간색일 때
+ if (greenmap[row][col] == curr.cnt + 1) { // 배양
+ tempmap[row][col] = 1;
+ } else if (redmap[row][col] == 0 && greenmap[row][col] == 0) { // 방문하지 않은곳이라면
+ redmap[row][col] = curr.cnt + 1;
+ Cell c = new Cell(row, col, curr.cnt + 1);
+ c.color = 'r';
+ que.offer(c);
+ }
+ }
+ }
+ }
+ }
+// System.out.println("tempmap");
+// for(int i=0;i 0 && p[i - 1] >= p[i])
+ i--;
+ if (i == 0)
+ return false;
+
+ int j = p.length - 1;
+ while (p[i - 1] >= p[j])
+ j--;
+ swap(p, i - 1, j);
+
+ int k = p.length - 1;
+ while (k > i)
+ swap(p, k--, i++);
+
+ return true;
+ }
+
+ public static void swap(int[] p, int i, int j) {
+ int temp = p[i];
+ p[i] = p[j];
+ p[j] = temp;
+ }
+}
+
+class Cell {
+ int r, c, cnt;
+ char color;
+
+ Cell(int r, int c, int cnt) {
+ this.r = r;
+ this.c = c;
+ this.cnt = cnt;
+ }
+ Cell(int r, int c, int cnt, char color) {
+ this.r = r;
+ this.c = c;
+ this.cnt = cnt;
+ this.color = color;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S18870_\354\242\214\355\221\234\354\225\225\354\266\225.java" "b/src/KSY/S18870_\354\242\214\355\221\234\354\225\225\354\266\225.java"
new file mode 100644
index 0000000..4f94b74
--- /dev/null
+++ "b/src/KSY/S18870_\354\242\214\355\221\234\354\225\225\354\266\225.java"
@@ -0,0 +1,74 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//271808KB/ 2376ms
+
+public class S18870_좌표압축 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine());
+ List nums = new ArrayList<>();
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for (int i = 0; i < N; i++) {
+ nums.add(new Node1(i, Integer.parseInt(st.nextToken()))); // 인덱스와 값을 묶에서 저장
+ }
+
+ // 값기준 정렬
+ Collections.sort(nums, (a, b) -> {
+ if (a.value > b.value)
+ return 1;
+ else {
+ if (a.value < b.value)
+ return -1;
+ else
+ return 0;
+ }
+ });
+
+ int num = 0, front = nums.get(0).value; // 처음값(앞 값)
+ for (int i = 0; i < N; i++) {
+ Node1 curr = nums.get(i);
+ if (curr.value != front) { // 앞에 있는 값과 같지 않다(= 새로운 값 등장)
+ num++;
+ front = curr.value;
+ }
+ curr.value = num;
+ }
+
+ // 인덱스 기준 정렬
+ Collections.sort(nums, (a, b) -> {
+ if (a.idx > b.idx)
+ return 1;
+ else {
+ if (a.idx < b.idx)
+ return -1;
+ else
+ return 0;
+ }
+ });
+
+ // 값 출력
+ for (int i = 0; i < N; i++) {
+ sb.append(nums.get(i).value).append(" ");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
+
+class Node1 {
+ int idx, value;
+
+ Node1(int idx, int value) {
+ this.idx = idx;
+ this.value = value;
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/S1946.java b/src/KSY/S1946.java
new file mode 100644
index 0000000..cb8c9e7
--- /dev/null
+++ b/src/KSY/S1946.java
@@ -0,0 +1,62 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//300400KB/ 1560ms
+
+public class S1946 {
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) { // test case
+ int N = Integer.parseInt(br.readLine());
+ List candidates = new ArrayList<>();
+ for(int i=0; i candidates.get(i).b) { // 서류에서 큰 값을 가진 면접 점수와 비교
+ answer++;
+ min = candidates.get(i).b;
+ }
+ }
+
+// sb.append(Arrays.toString(candidates)).append("\n"); // 답 입력
+ sb.append(answer).append("\n"); // 답 입력
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
+
+class Candidate implements Comparable{
+ int a, b;
+ Candidate(int a, int b){
+ this.a = a; this.b = b;
+ }
+ @Override
+ public int compareTo(Candidate o) { // 서류 기준으로 내림차순 정렬
+ if(a > o.a) return 1;
+ else if(a < o.a) return -1;
+ return 0;
+ }
+ @Override
+ public String toString() {
+ return a + " " + b;
+ }
+
+}
\ No newline at end of file
diff --git a/src/KSY/S1949.java b/src/KSY/S1949.java
new file mode 100644
index 0000000..484b0d7
--- /dev/null
+++ b/src/KSY/S1949.java
@@ -0,0 +1,14 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S1949 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+
+ }
+
+}
diff --git "a/src/KSY/S1976_\354\227\254\355\226\211\352\260\200\354\236\220.java" "b/src/KSY/S1976_\354\227\254\355\226\211\352\260\200\354\236\220.java"
new file mode 100644
index 0000000..583a489
--- /dev/null
+++ "b/src/KSY/S1976_\354\227\254\355\226\211\352\260\200\354\236\220.java"
@@ -0,0 +1,64 @@
+package KSY;
+import java.io.*;
+import java.util.*;
+
+//17216KB/ 212ms
+
+public class S1976_여행가자 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine());
+ int M = Integer.parseInt(br.readLine());
+
+ int[][] adjMatrix = new int[N+1][N+1];
+
+ for(int i=1; i<=N; i++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for(int j=1; j<=N; j++) {
+ adjMatrix[i][j] = Integer.parseInt(st.nextToken());
+ }
+ }
+
+ // 플로이드-워샬
+ for(int k=1; k<=N; k++) {
+ for(int i=1; i<=N; i++) {
+ for(int j=1; j<=N; j++) {
+ if(adjMatrix[i][j] == 0) {
+ if(adjMatrix[i][k] == 1 && adjMatrix[k][j] == 1) {
+ adjMatrix[i][j] = 1;
+ }
+ }
+ }
+ }
+ }
+
+ // 여행계획
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int front = Integer.parseInt(st.nextToken());
+ boolean flag = true;
+ for(int i=1; i queue = new ArrayDeque<>(); // 배열형태의 deque
+ queue.offer(new int[]{0, 0, 1}); // row, col, distance
+ int[] dr = {0, 1, 0, -1};
+ int[] dc = {1, 0, -1, 0};
+
+ while (!queue.isEmpty()) {
+ int[] curr = queue.poll();
+ int r = curr[0];
+ int c = curr[1];
+ int distance = curr[2];
+
+ if (r == N - 1 && c == M - 1) { // 찾는 위치 값 발견했다면 출력 후 종료
+ System.out.println(distance);
+ break;
+ }
+
+ for (int d = 0; d < 4; d++) {
+ int newRow = r + dr[d];
+ int newCol = c + dc[d];
+
+ if (newRow >= 0 && newRow < N && newCol >= 0 && newCol < M && // 범위를 벗어나지 않앗다면
+ maze[newRow][newCol] == 1 && dist[newRow][newCol] == 0) { // 아직 방문하지 않은 위치이고 0이 아닌 1이라면
+ dist[newRow][newCol] = distance + 1; // 거리 업데이트
+ queue.offer(new int[]{newRow, newCol, distance + 1}); // 큐 삽입
+ }
+ }
+ }
+
+ br.close();
+ }
+}
diff --git "a/src/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.java" "b/src/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.java"
new file mode 100644
index 0000000..2557471
--- /dev/null
+++ "b/src/KSY/S2179_\353\271\204\354\212\267\355\225\234\353\213\250\354\226\264.java"
@@ -0,0 +1,63 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+//37968KB 1992ms
+
+public class S2179_비슷한단어 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ Map> map = new HashMap<>();
+ String maxString = "";
+ int minIndex = Integer.MAX_VALUE;
+
+ int N = Integer.parseInt(br.readLine()); // 문자 개수
+ for(int i=0; i list = map.putIfAbsent(sub, new ArrayList<>());
+ if(list == null || !list.contains(candi)) // 같은 단어 제외
+ map.get(sub).add(candi);
+ }
+ }
+
+ for(Map.Entry> m: map.entrySet()) {
+// System.out.println("key : " + m.getKey() + " value : " + m.getValue());
+ if(1 < m.getValue().size()) { // 리스트 크기가 1이상
+ if(m.getKey().length() > maxString.length() || (m.getKey().length() == maxString.length() && m.getValue().get(0).idx < minIndex)) {
+ // 문자열의 크기가 가장 크고, 해당하는 단어가 2개 이상일 때
+// System.out.println(maxString);
+ maxString = m.getKey();
+ minIndex = m.getValue().get(0).idx;
+ }
+ }
+
+
+ }
+ sb.append(map.get(maxString).get(0).str).append("\n");
+ sb.append(map.get(maxString).get(1).str);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+}
+
+class Candi{ // implements Comparable{
+ int idx;
+ String str;
+ Candi(int idx, String str){
+ this.idx = idx; this.str = str;
+ }
+ @Override
+ public boolean equals(Object obj) {
+ return str.equals(((Candi)obj).str);
+ }
+
+}
\ No newline at end of file
diff --git "a/src/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.java" "b/src/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.java"
new file mode 100644
index 0000000..c7fa39b
--- /dev/null
+++ "b/src/KSY/S2206_\353\262\275\353\266\200\354\210\230\352\263\240\354\235\264\353\217\231\355\225\230\352\270\260.java"
@@ -0,0 +1,90 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+// 109200KB/ 704ms
+
+public class S2206_벽부수고이동하기 {
+
+ static int[] dr = new int[] { 0, 1, 0, -1 };
+ static int[] dc = new int[] { 1, 0, -1, 0 };
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int[][] map = new int[N][M];
+ boolean[][][] visited = new boolean[N][M][2];
+
+ for (int i = 0; i < N; i++) {
+ String str = br.readLine();
+ for (int j = 0; j < M; j++) {
+ map[i][j] = (int) (str.charAt(j) - '0');
+ }
+ }
+
+ Queue que = new ArrayDeque<>();
+ que.offer(new Point2(0, 0, 1, 1));
+ visited[0][0][0] = true;
+ while (!que.isEmpty()) {
+ Point2 curr = que.poll();
+ if (curr.r == N - 1 && curr.c == M - 1) {
+ sb.append(curr.value);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ return;
+ }
+
+ for (int d = 0; d < 4; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ if (-1 < row && row < N && -1 < col && col < M) {
+ if (curr.flag == 0) { // 기회 없음
+ if (map[row][col] == 0 && !visited[row][col][1]) { // 방문하지 않았고 벽이 아니라면
+ visited[row][col][1] = true;
+ que.offer(new Point2(row, col, curr.value + 1, 0));
+ }
+ } else { // 기회 있음
+ // 부신다
+ if (map[row][col] == 1 && !visited[row][col][1]) {
+ visited[row][col][1] = true;
+ que.offer(new Point2(row, col, curr.value + 1, 0));
+ }
+ // 안 부신다
+ if (!visited[row][col][0] && map[row][col] == 0) {
+ visited[row][col][0] = true;
+ que.offer(new Point2(row, col, curr.value + 1, 1));
+ }
+ }
+ }
+
+ }
+
+ }
+ sb.append(-1);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
+
+class Point2 {
+ int r, c, value;
+ int flag;
+
+ Point2(int r, int c, int value, int flag) {
+ this.r = r;
+ this.c = c;
+ this.value = value;
+ this.flag = flag;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.java" "b/src/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.java"
new file mode 100644
index 0000000..870ba70
--- /dev/null
+++ "b/src/KSY/S2457_\352\263\265\354\243\274\353\213\230\354\235\230\354\240\225\354\233\220.java"
@@ -0,0 +1,77 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+public class S2457_공주님의정원 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ List flowers = new ArrayList<>();
+
+ int N = Integer.parseInt(br.readLine());
+ for(int i=0; i 11 || (flower.m2 == 11 && flower.d2 >= 30)) {
+ answer++;
+ break;
+ }
+
+ if(flower.m1 < now[2] || (flower.m1 == now[2] && flower.d1 <= now[])) {
+ answer++;
+ now[0] = flower.m2;
+ now[1] = flower.d2;
+ } else if(flower.m1 == now[0] && flower.d1 < now[1]) {
+
+ }
+ }
+
+ sb.append(answer);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
+
+class Flower implements Comparable{
+ int m1, d1, m2, d2;
+ Flower(int m1, int d1, int m2, int d2){
+ this.m1 = m1; this.d1 = d1; this.m2 = m2; this.d2 = d2;
+ }
+ public int compareTo(Flower o) {
+ if(m1 > o.m1) return 1;
+ if(m1 < o.m1) return -1;
+ else {
+ if(d1 > o.d1) return 1;
+ if(d1 < o.d1) return -1;
+ else {
+ if(m2 < o.m2) return 1;
+ if(m2 > o.m2) return -1;
+ else {
+ if(d2 < o.d2) return 1;
+ if(d2 > o.d2) return -1;
+ return 0;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/S2533.java b/src/KSY/S2533.java
new file mode 100644
index 0000000..9eef7e0
--- /dev/null
+++ b/src/KSY/S2533.java
@@ -0,0 +1,10 @@
+package KSY;
+
+public class S2533 {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git "a/src/KSY/S2629_\354\226\221\355\214\224\354\240\200\354\232\270.java" "b/src/KSY/S2629_\354\226\221\355\214\224\354\240\200\354\232\270.java"
new file mode 100644
index 0000000..d26e48f
--- /dev/null
+++ "b/src/KSY/S2629_\354\226\221\355\214\224\354\240\200\354\232\270.java"
@@ -0,0 +1,61 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+//12272KB/ 80ms
+
+public class S2629_양팔저울 {
+
+ static int N, M;
+ static int[] weights;
+ static StringBuilder sb;
+ static boolean dp[][];
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ sb = new StringBuilder();
+
+ N = Integer.parseInt(br.readLine()); // 수의 개수
+
+ weights = new int[N];
+ dp = new boolean[31][15001];
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for(int i=0; i 15000) {
+ sb.append("N ");
+ } else
+ sb.append(dp[N][marble]? "Y " : "N ");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+ private static void DFS(int depth, int weight) {
+ if(dp[depth][weight]) return; // 이미 만들었다면
+ dp[depth][weight] = true; // 만들 수 있음
+ if(depth == N) return; // 추 개수 넘너가면
+
+ // 추가
+ DFS(depth+1, weight + weights[depth]);
+ // 빼기
+ DFS(depth+1, Math.abs(weight - weights[depth]));
+ // 미추가
+ DFS(depth+1, weight);
+
+
+ }
+
+}
diff --git "a/src/KSY/S2636_\354\271\230\354\246\210.java" "b/src/KSY/S2636_\354\271\230\354\246\210.java"
new file mode 100644
index 0000000..ec777b3
--- /dev/null
+++ "b/src/KSY/S2636_\354\271\230\354\246\210.java"
@@ -0,0 +1,29 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+public class S2636_치즈 {
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int[][] cheeze = new int[N][M];
+ boolean[][] checkbox = new boolean[N][M];
+
+ for(int i=0; i0; i--) {
+ while(nums[i] <= nums[i-1]) {
+ nums[i-1]--;
+ answer++;
+ }
+ }
+ System.out.println(answer);
+ }
+
+}
diff --git "a/src/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.java" "b/src/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.java"
new file mode 100644
index 0000000..be292c7
--- /dev/null
+++ "b/src/KSY/S3000_swea_\354\244\221\352\260\204\352\260\222\352\265\254\355\225\230\352\270\260.java"
@@ -0,0 +1,62 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+// 125,224kb/ 908ms
+
+public class S3000_swea_중간값구하기 {
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for (int test = 1; test <= T; test++) {
+ long answer = 0;
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken()); // 자연수 2개 개수
+ int A = Integer.parseInt(st.nextToken()); // 초기값
+
+ // 중간값을 기준으로 트리를 min heap, max heap으로 구성
+ PriorityQueue left = new PriorityQueue<>(Collections.reverseOrder());
+ PriorityQueue right = new PriorityQueue<>();
+ left.offer(A);
+
+ for (int i = 0; i < N; i++) {
+ st = new StringTokenizer(br.readLine());
+ int X = Integer.parseInt(st.nextToken());
+ int Y = Integer.parseInt(st.nextToken());
+
+ if(X > left.peek() && Y > left.peek()) { // 둘 다 중간값보다 크다면
+ right.offer(X);
+ right.offer(Y);
+ left.offer(right.poll());
+ } else if(X < left.peek() && Y < left.peek()) { // 둘 다 중간값보다 작다면
+ left.offer(X);
+ left.offer(Y);
+ right.offer(left.poll());
+ } else {
+ if(X > Y) {
+ right.offer(X);
+ left.offer(Y);
+ } else {
+ left.offer(X);
+ right.offer(Y);
+ }
+ }
+// System.out.println(left.peek());
+ answer = (left.peek() + answer) % 20171109;
+
+ }
+
+ sb.append("#").append(test).append(" ").append(answer);
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git "a/src/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.java" "b/src/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.java"
new file mode 100644
index 0000000..dc9b823
--- /dev/null
+++ "b/src/KSY/S4949_\352\267\240\355\230\225\354\236\241\355\236\214\354\204\270\354\203\201.java"
@@ -0,0 +1,54 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+// 16684 180
+
+public class S4949_균형잡힌세상 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ String str = br.readLine();
+ while(!str.equals(".")) {
+ Stack stack = new Stack<>();
+ boolean flag = false;
+
+ for(int i=0; i que = new ArrayDeque<>();
+// que.offer(new Tomato());
+
+ for (int k = 0; k < H; k++) {
+ for (int i = 0; i < N; i++) {
+ st = new StringTokenizer(br.readLine());
+ for (int j = 0; j < M; j++) {
+ tomato[i][j][k] = Integer.parseInt(st.nextToken());
+ if (tomato[i][j][k] == 1) {
+ que.offer(new Tomato(i, j, k, 0));
+ visited[i][j][k] = true;
+ }
+ }
+ }
+ }
+
+ while (!que.isEmpty()) {
+ Tomato curr = que.poll();
+ if(que.isEmpty())
+ answer = curr.cnt;
+
+ for (int d = 0; d < 6; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ int hei = curr.h + dh[d];
+
+ if (-1 < row && row < N && -1 < col && col < M && -1 < hei && hei < H && !visited[row][col][hei]
+ && tomato[row][col][hei] == 0) {
+ visited[row][col][hei] = true;
+ que.offer(new Tomato(row, col, hei, curr.cnt+1));
+ }
+
+ }
+
+ }
+
+ boolean flag =false;
+ for (int i = 0; i < H; i++) {
+ for (int j = 0; j < N; j++) {
+ for (int k = 0; k < M; k++) {
+ if (tomato[j][k][i] == 0 && !visited[j][k][i]) { // 안 익은 토마토 인데 방문하지 않았다면
+ flag = true;
+ break;
+ }
+ }
+ if(flag)
+ break;
+ }
+ if(flag)
+ break;
+ }
+
+ if(flag) {
+ sb.append(-1);
+ } else {
+ sb.append(answer);
+ }
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
+
+class Tomato {
+ int r, c, h, cnt;
+
+ Tomato(int r, int c, int h, int cnt) {
+ this.r = r;
+ this.c = c;
+ this.h = h;
+ this.cnt = cnt;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java" "b/src/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java"
new file mode 100644
index 0000000..16f6597
--- /dev/null
+++ "b/src/KSY/S7662_\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.java"
@@ -0,0 +1,81 @@
+package KSY;
+
+import java.util.*;
+import java.io.*;
+
+//447296KB/ 2952ms
+
+public class S7662_이중우선순위큐 {
+
+ static Map live;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int N = Integer.parseInt(br.readLine());
+ PriorityQueue pqMin = new PriorityQueue<>();
+ PriorityQueue pqMax = new PriorityQueue<>(Collections.reverseOrder());
+ live = new HashMap<>(); //큐 안에 존재하는 수 & 개수
+
+ for(int i=0; i que) {
+ int curr=-1;
+ while(!que.isEmpty()) {
+ curr = que.poll();
+ if(live.getOrDefault(curr, 0) == 0) // 지울 값이 없다면
+ continue;
+
+ if(live.get(curr) == 1) { // 지울 값이 한 개 있다면
+ live.remove(curr);
+ }
+ else // 지울 수 있는 값 한개 이상
+ live.put(curr, live.get(curr)-1); // 존재하는 curr 중 1개 삭제
+ break;
+
+ }
+ return curr;
+ }
+
+}
diff --git "a/src/KSY/S9095_123\353\215\224\355\225\230\352\270\260.java" "b/src/KSY/S9095_123\353\215\224\355\225\230\352\270\260.java"
new file mode 100644
index 0000000..0b5a0e5
--- /dev/null
+++ "b/src/KSY/S9095_123\353\215\224\355\225\230\352\270\260.java"
@@ -0,0 +1,41 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+// 11600KB/ 76ms
+
+public class S9095_123더하기 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+
+ for(int test=0; test que = new ArrayDeque<>();
+ que.offer(0);
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ if(visited[curr])
+ continue;
+ visited[curr] = true;
+
+ if(curr == N+1) {
+ flag = true;
+ break;
+ }
+
+ for(int i=1; i<=N+1; i++) {
+ if(adjMatrix[curr][i]) {
+ que.offer(i);
+ }
+ }
+
+ }
+ if(flag)
+ sb.append("happy");
+ else
+ sb.append("sad");
+ sb.append("\n");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
diff --git "a/src/KSY/S9375_\355\214\250\354\205\230\354\231\225\354\213\240\355\225\264\353\271\210.java" "b/src/KSY/S9375_\355\214\250\354\205\230\354\231\225\354\213\240\355\225\264\353\271\210.java"
new file mode 100644
index 0000000..62f38f8
--- /dev/null
+++ "b/src/KSY/S9375_\355\214\250\354\205\230\354\231\225\354\213\240\355\225\264\353\271\210.java"
@@ -0,0 +1,42 @@
+package KSY;
+
+import java.io.*;
+import java.util.*;
+
+public class S9375_패션왕신해빈 {
+ static int answer;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int N = Integer.parseInt(br.readLine());
+ answer = 1;
+ Map map = new HashMap<>();
+
+ for(int i=0; i cores = new ArrayList<>();
+ static int answer, N, test;
+
+ static int[] dr = new int[] {1, 0, -1, 0}; // down, right, up, left
+ static int[] dc = new int[] {0, 1, 0, -1};
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(test=1; test<=T; test++) { // test case
+ answer = Integer.MAX_VALUE; // 전선의 총 길이
+ N = Integer.parseInt(br.readLine()); // map 크기
+ int[][] map = new int[N][N]; // map
+ for(int i=0; i answer) // backtracking : 지금까지 발견된 것보다 크다면 더이상 탐색 x
+ return;
+ if(coreIndex == cores.size()) { // 기저조건 : 모든 core를 연결함
+ if(answer > sum)
+ answer = sum;
+ return;
+ }
+
+ boolean unAbleCheck = true;
+
+ for(int d=0; d<4; d++) { //4방향 (down, right, up, left)
+ //map copy
+ int[][] tempMap = new int[N][N];
+ for(int i=0; i N-1 || col < 0 || col > N-1) {
+ return cnt;
+ }
+ else
+ return -1;
+ }
+
+}
+
+class Core{
+ int r, c;
+ Core(int r, int c){
+ this.r = r; this.c = c;
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/input.txt b/src/KSY/input.txt
new file mode 100644
index 0000000..387bd1b
--- /dev/null
+++ b/src/KSY/input.txt
@@ -0,0 +1,61 @@
+30
+2
+5 5
+2
+4 2
+2
+3 4
+4
+2 3 10 5
+4
+1 2 3 4
+20
+26 19 23 2 24 2 17 15 1 27 6 29 18 23 27 13 26 21 9 1
+20
+4 5 3 4 2 4 4 3 5 2 2 3 5 5 5 2 5 2 5 5
+20
+1 3 6 5 5 1 5 4 3 5 4 2 4 6 5 5 4 5 5 3
+20
+4 5 6 6 5 3 1 3 3 3 3 5 3 3 3 4 5 1 4 3
+20
+26 6 8 15 10 15 14 6 19 16 5 13 9 12 14 29 28 3 12 27
+30
+8 27 2 32 19 16 19 11 33 35 7 9 6 12 7 1 1 28 38 32 25 14 5 15 34 30 14 24 7 24
+30
+3 2 5 5 5 4 4 5 2 4 3 4 3 5 5 2 5 4 2 5 2 1 5 4 4 3 2 4 2 4
+30
+6 4 6 5 6 1 1 6 4 5 6 6 5 1 3 6 5 5 5 4 6 1 1 5 3 3 6 1 5 5
+30
+1 6 3 5 6 1 4 5 4 5 5 5 6 5 2 3 6 2 3 5 5 1 5 4 6 5 6 4 6 6
+30
+35 8 19 40 12 17 11 29 14 21 31 39 28 33 16 19 34 12 12 10 28 40 6 19 36 19 10 2 34 22
+50
+37 59 11 13 18 30 22 53 35 18 27 7 50 19 57 38 54 24 31 38 4 8 9 54 37 29 32 27 11 7 19 57 36 54 35 31 45 2 10 54 27 14 51 27 34 51 1 58 4 6
+50
+2 2 5 2 3 2 3 1 3 5 5 3 2 2 2 3 4 4 4 2 1 5 4 4 4 2 3 4 2 5 4 3 5 3 5 2 2 4 4 4 5 5 3 4 2 3 4 4 5 4
+50
+6 6 5 4 6 6 1 4 2 1 4 6 2 3 5 6 5 5 1 5 5 4 5 3 1 6 3 6 5 3 5 1 3 5 3 6 3 5 5 2 4 3 6 3 5 5 3 5 5 6
+50
+5 5 5 1 4 5 3 2 4 5 5 5 6 3 2 5 5 6 3 5 3 5 4 6 5 5 3 3 6 5 6 1 3 4 4 6 1 6 3 3 6 3 2 6 6 1 5 4 5 4
+50
+11 17 35 37 41 2 8 20 40 5 25 58 54 7 36 33 46 44 37 53 15 8 42 56 35 2 40 55 50 58 49 2 35 19 32 54 18 12 22 56 23 17 47 4 30 56 48 4 36 33
+70
+37 26 72 57 38 33 9 6 66 71 59 55 21 58 65 57 27 36 14 27 7 76 34 34 8 55 23 80 41 35 39 38 8 5 17 23 42 1 27 78 77 26 74 51 13 27 32 11 75 37 37 62 75 73 41 28 29 57 56 18 79 27 48 9 1 30 31 65 73 63
+70
+3 4 4 3 4 5 4 1 5 4 4 5 5 5 4 4 2 3 3 4 4 2 3 2 5 1 2 5 4 4 4 5 2 2 4 2 3 2 3 5 4 5 4 4 1 2 3 4 4 4 5 3 5 5 4 5 4 3 5 5 2 4 1 4 2 4 5 3 5 3
+70
+6 5 1 3 3 5 5 5 3 5 3 4 2 6 5 5 1 2 1 3 5 4 6 1 1 5 5 5 5 5 6 6 5 1 1 5 3 5 4 5 3 5 2 4 3 1 2 5 6 3 6 3 4 4 5 3 5 5 3 3 6 5 2 1 3 5 6 5 4 5
+70
+5 5 4 6 6 3 4 1 1 1 3 6 6 1 5 5 1 5 3 5 6 3 5 3 4 6 1 5 2 6 3 5 6 5 3 5 1 3 4 4 6 5 2 1 6 5 4 5 5 4 5 6 3 5 2 4 3 3 3 3 3 6 3 5 5 3 5 4 5 5
+70
+47 25 56 22 41 75 1 47 39 28 48 52 43 50 56 2 50 41 35 6 36 23 60 67 73 3 30 52 31 8 60 34 10 55 35 24 28 75 45 5 37 49 24 1 59 7 6 20 77 4 5 67 5 25 18 61 29 54 41 69 68 16 33 48 65 18 22 34 70 2
+100
+30 108 8 61 17 56 54 29 50 72 9 97 67 36 75 110 88 99 75 93 19 44 39 45 72 53 115 106 1 20 25 118 117 51 89 72 116 33 76 26 6 47 35 55 45 89 78 69 56 78 58 95 34 9 1 14 2 9 8 64 12 85 117 49 40 44 8 2 89 36 12 56 89 18 38 63 3 57 29 110 25 46 98 20 119 52 114 107 23 11 105 35 119 55 82 115 56 85 68 28
+100
+2 4 4 3 1 3 4 5 5 2 3 2 4 4 4 4 4 2 4 1 5 3 5 3 2 3 4 4 2 2 3 5 2 4 2 4 3 4 4 2 4 5 4 5 4 4 4 5 5 3 3 4 4 1 2 1 5 2 4 4 4 1 2 4 1 2 1 4 5 2 4 5 5 2 4 5 1 4 3 5 4 5 2 3 2 5 4 4 5 3 2 4 4 2 2 5 5 1 2 2
+100
+4 5 2 6 6 1 5 2 1 1 3 5 3 3 5 6 5 6 3 5 5 5 1 1 6 3 5 5 6 5 4 4 6 6 1 5 1 5 1 4 5 5 2 5 5 5 5 3 6 3 2 5 5 6 6 3 5 3 1 2 5 1 4 6 4 6 1 3 4 3 6 1 1 5 2 3 1 5 3 5 6 5 5 5 5 3 5 6 2 6 5 4 3 5 5 3 5 6 5 6
+100
+3 6 5 1 6 5 6 1 6 5 5 6 6 5 5 6 3 5 3 5 6 6 3 5 5 6 3 3 3 2 4 6 4 4 5 4 5 6 6 5 1 5 2 3 3 3 5 3 6 5 4 3 6 5 6 6 5 5 5 2 3 5 1 6 1 6 3 3 6 5 2 6 3 2 3 3 5 1 6 5 5 6 1 3 4 3 3 5 2 1 1 6 1 5 6 4 6 5 4 5
+100
+68 88 9 43 34 56 114 65 16 83 42 2 120 94 45 100 44 110 47 34 16 112 24 108 22 78 88 120 65 69 108 81 36 53 82 15 67 56 82 95 74 95 14 77 29 97 68 103 32 109 88 115 80 107 15 116 81 78 82 17 98 100 47 103 30 41 55 72 100 24 11 19 105 12 64 102 100 22 21 106 50 8 66 14 20 58 43 14 78 82 21 5 1 81 89 65 35 20 87 47
diff --git "a/src/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.java" "b/src/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.java"
new file mode 100644
index 0000000..768e335
--- /dev/null
+++ "b/src/KSY/personal/Algo1_\354\204\234\354\232\270_19\353\260\230_\354\240\204\354\236\220\353\240\210\354\235\270\354\247\200.java"
@@ -0,0 +1,32 @@
+package KSY.personal;
+
+import java.util.*;
+import java.io.*;
+
+//public class Main { // class start
+public class Algo1_서울_19반_전자레인지 { // class start
+
+ public static void main(String[] args) throws IOException { // main start
+ Scanner sc = new Scanner(System.in); // 입력받기 위한 scanner
+ int T = sc.nextInt(); // 맞춰야하는 시간
+ int[] buttonValue = new int[] { 300, 60, 10 };
+
+ // 만족하지 못 하는 경우
+ if (T % 10 != 0) {
+ System.out.println(-1);
+ return;
+ }
+
+ // DFS(T); // T를 만족시키는 조합 찾기
+ int[] answer = new int[3];
+ for (int i = 0; i < 3; i++) {
+ answer[i] += T / buttonValue[i];
+ T %= buttonValue[i];
+ }
+ if (T == 0)
+ System.out.println(answer[0] + " " + answer[1] + " " + answer[2]); // 출력
+ else
+ System.out.println(-1);
+ } // main end
+
+} // class end
\ No newline at end of file
diff --git "a/src/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.java" "b/src/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.java"
new file mode 100644
index 0000000..00e97f7
--- /dev/null
+++ "b/src/KSY/personal/Algo3_\354\204\234\354\232\270_19\353\260\230_\352\271\200\354\213\240\354\230\201.java"
@@ -0,0 +1,153 @@
+package KSY.personal;
+
+import java.io.*;
+import java.util.Arrays;
+import java.util.StringTokenizer;
+
+public class Algo3_서울_19반_김신영 { // 클래스 시작
+
+ public static void main(String[] args) throws IOException { // 메인 시작
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //입력받기 위한 BR
+ StringBuilder sb = new StringBuilder();
+ int K = Integer.parseInt(br.readLine()); // 2^K 크기의 K값
+ StringTokenizer st = new StringTokenizer(br.readLine()); // 2*k개의 연산 입력
+ String[] Operater = new String[2*K];
+
+ for(int i=0; i<2*K; i++) { // 연산 수행
+ Operater[i] = st.nextToken(); //연산
+ }
+ int[][] paper = new int[1][1];
+ paper[0][0] = Integer.parseInt(br.readLine()); // 구멍 뚫기
+
+ for(int i=2*K-1; i >= 0; i--) { //반대로 연산
+ paper = DFS(paper, Operater[i]);
+ }
+ //paper 출력
+ for(int j=0; j=0; i--) {
+ for(int j=paper[0].length-1; j>=0; j--) {
+ switch(paper[i][j]) {
+ case 0:
+ newPaper[i][paper[0].length-j-1] = 1;
+ break;
+ case 1:
+ newPaper[i][paper[0].length-j-1] = 0;
+ break;
+ case 2:
+ newPaper[i][paper[0].length-j-1] = 3;
+ break;
+ case 3:
+ newPaper[i][paper[0].length-j-1] = 2;
+ break;
+ }
+ }
+ }
+
+ break;
+ case "L": // 오른쪽으로 펴기
+ newPaper = new int[paper.length][paper[0].length*2];
+
+ //원배열 복사
+ for(int i=0; i=0; i--) {
+ for(int j=0; j que = new LinkedList<>();
+ que.offer(new int[] {1, 0, 0});
+
+ while(!que.isEmpty()) {
+ int[] curr = que.poll();
+
+ for(int d=0; d<4; d++) {
+ int row = curr[1] + dr[d];
+ int col = curr[2] + dc[d];
+ if(-1 < row && row < N && -1 < col && col < M && map[row][col] == 1) {
+ //갈 수 있는 길이고 한 번만 방문한 곳이라면
+ map[row][col] = curr[0]+1; // 큐에 들어간 순간 이미 방문이 보장 됨. (중복 제거!!!)
+ que.offer(new int[] {curr[0]+1, row, col});
+ }
+ }
+ }
+ System.out.println(map[N-1][M-1]);
+ }
+}
+// private static void BFS(int r, int c, int sum) {
+// answer[r][c] = sum;
+// if(r == N-1 && c == M-1) { // 위치 찾음
+// return;
+// }
+// for(int d=0; d<4; d++) {
+// int row = r + dr[d];
+// int col = c + dc[d];
+// if(-1 < row && row < N && -1 < col && col < M && map[row][col] == 1 && answer[row][col] != 0) {
+// //한 번도 가지 않은 곳이 아닌 현재 값보다 작은 값이면 업데이트
+// BFS(row, col, sum+1);
+// }
+// }
+//
+// }
+
+class Point implements Comparable{
+ int r, c, value;
+ Point(int r, int c, int value){
+ this.r = r; this.c = c; this.value = value;
+ }
+
+ public int compareTo(Point p) {
+ if(this.value > p.value) return 1;
+ else {
+ if(value < p.value) return -1;
+ else return 0;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/KSY/personal/AlgoURa/CompleteBinaryTree1.java b/src/KSY/personal/AlgoURa/CompleteBinaryTree1.java
new file mode 100644
index 0000000..d986efe
--- /dev/null
+++ b/src/KSY/personal/AlgoURa/CompleteBinaryTree1.java
@@ -0,0 +1,56 @@
+package KSY.personal.AlgoURa;
+
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+public class CompleteBinaryTree1 {
+ private static Object[] tree;
+ private final int SIZE;
+ private int lastIndex=0;
+
+ CompleteBinaryTree1(int size){
+ this.SIZE = size;
+ tree = new Object[SIZE+1]; //주의
+ }
+
+ public boolean add(T data) {
+ if(lastIndex == SIZE)
+ return false;
+ tree[++lastIndex] = data;
+ return true;
+ }
+
+ public boolean isEmpty() {
+ return lastIndex == 0;
+ }
+
+ public boolean isFull() {
+ return lastIndex == SIZE;
+ }
+
+ public void BFS() {
+ if(isEmpty())
+ return;
+ Queue que = new ArrayDeque<>();
+ que.offer(1);
+
+ while(!que.isEmpty()) {
+ int current = que.poll();
+ System.out.println(tree[current]);
+ if(current*2 <= lastIndex) // 주의
+ que.offer(current*2);
+ if(current*2+1 <= lastIndex) // 주의
+ que.offer(current*2+1);
+ }
+ }
+
+ public static void main(String[] args) {
+ CompleteBinaryTree1 tree = new CompleteBinaryTree1(9);
+
+ for(int i=0; i<9; i++) {
+ tree.add((char)(65+i)); // 65 == 'A'
+ }
+ tree.BFS();
+ }
+
+}
diff --git a/src/KSY/personal/AlgoURa/PermutationBitTest.java b/src/KSY/personal/AlgoURa/PermutationBitTest.java
new file mode 100644
index 0000000..e4cc8eb
--- /dev/null
+++ b/src/KSY/personal/AlgoURa/PermutationBitTest.java
@@ -0,0 +1,43 @@
+package KSY.personal.AlgoURa;
+
+import java.util.*;
+
+// 순열을 구할 때 배열이 아닌 비트마스킹을 사용한다고 더 빠른 것은 아니다
+// 하지만 이러한 구현이 가능하고, 비트마스킹을 활용해야하는 문제를 만날 수 있다.
+
+public class PermutationBitTest {
+ static int N, R, input[], numbers[];
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ N = sc.nextInt();
+ R = sc.nextInt();
+ input = new int[N];
+ numbers = new int[R];
+
+ for(int i=0; i0 && p[i-1]>=p[i]) --i; // 같거나 크면 0위치 전까지 앞으로 계속 감
+
+ if(i == 0) return false; // 본인의 앞이 없는 상황, 다음 순열 없음(가장 큰 순열의 형태)
+
+ //2. 꼭대기 직전(i-1)위치에 교환할 한 단계 큰 수 찾기
+ int j = N-1;
+ while(p[i-1] >= p[j]) --j; // swaping할 수는 무조건 존재 함, 찾으면 나온다
+
+ //3. 꼭대기 직전(i-1)위치의 수와 한 단계 큰 수를 교환하기
+ swap(p, i-1, j);
+
+ //4. 꼭대기자리부터 맨 뒤까지 수를 오름차순의 형태로 바꿈
+ int k = N-1;
+ while(i map, limit;
+
+ public static void main(String[] args) throws Exception{
+ System.setIn(new FileInputStream("input.txt"));
+ BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
+ String [] line1=br.readLine().split(" ");
+
+ int S=Integer.parseInt(line1[0]);
+ int P=Integer.parseInt(line1[1]);
+
+ String DNA_src=br.readLine();
+
+ String line3[]=br.readLine().split(" ");
+
+ A_limit=Integer.parseInt(line3[0]);
+ C_limit=Integer.parseInt(line3[1]);
+ G_limit=Integer.parseInt(line3[2]);
+ T_limit=Integer.parseInt(line3[3]);
+
+ limit=new HashMap<>();
+ limit.put('A', A_limit);
+ limit.put('C', C_limit);
+ limit.put('G', G_limit);
+ limit.put('T', T_limit);
+
+ map=new HashMap<>();
+ map.put('A',0);
+ map.put('C',0);
+ map.put('G',0);
+ map.put('T',0);
+
+
+ //첫 비밀문자열에서 각 문자가 몇 개 포함되어 있는지 세어본다
+ for (int i = 0; i < P; i++) {
+ char pick=DNA_src.charAt(i);
+ map.put(pick, map.get(pick)+1);
+ }
+
+ int result=0;
+ if(check()) result++; //첫판에서 조건을 만족하면 1증가
+
+ //이제 슬라이딩 윈도우 시작
+ for (int i = 1; i+P-1 < S; i++) {
+ char pre=DNA_src.charAt(i-1);//현재 윈도우의 직전 캐릭터
+ char post=DNA_src.charAt(i+P-1);//새로 포함된 캐릭터
+ map.put(pre, map.get(pre)-1);
+ map.put(post, map.get(post)+1);
+ if(check()) result++;
+ }
+
+ System.out.println(result);
+
+ }
+
+ static boolean check() {
+ return map.entrySet().stream().allMatch(e->e.getValue() >= limit.get(e.getKey()));
+// Set keys=map.keySet();
+// for(Iterator it=keys.iterator(); it.hasNext();) {
+// switch (it.next()) {
+// case 'A': if(map.get('A') que = new ArrayDeque<>(); // 큐에 넣는 값은 방문대상을 관리할 값과 그밖의 값들이 될 수 있다.
+ boolean[] visited = new boolean[size];
+
+ //탐색 시작점 정점0으로 하자
+ que.offer(0);
+ visited[0] = true;
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (int i = 0; i < size; i++) {
+ if(adjMatrix[curr][i] != 0 && !visited[i]) { // 인접해있고 방문하지 않았다면
+ que.offer(i);
+ visited[i] = true;
+ }
+ }
+ }
+
+
+ }
+
+ // 인접 리스트
+ private static void bfs(Node adjList[]) {
+ int size = adjList.length;
+ Queue que = new ArrayDeque<>(); // 큐에 넣는 값은 방문대상을 관리할 값과 그밖의 값들이 될 수 있다.
+ boolean[] visited = new boolean[size];
+
+ //탐색 시작점 정점0으로 하자
+ que.offer(0);
+ visited[0] = true;
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (Node temp = adjList[curr]; temp!=null; temp=temp.next) {
+ if(!visited[temp.vertext]) { // 인접해있고 방문하지 않았다면
+ que.offer(temp.vertext);
+ visited[temp.vertext] = true;
+ }
+ }
+ }
+
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.java"
new file mode 100644
index 0000000..e2dfe48
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2507/MakeSpaceTest.java"
@@ -0,0 +1,49 @@
+package KSY.personal.AlgoURa.주차7;
+
+import java.util.Scanner;
+
+public class MakeSpaceTest {
+
+ static int space[][];
+ static int white, green; // 종료조건에 만족하면 값을 누적한다.
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ int N = sc.nextInt();
+ space = new int[N][N];
+
+ for(int r=0; rN) {
+ ans++;
+ return;
+ }
+
+ // 유도파트
+ for(int c=1; c<=N; c++) { // 1열부터 N열까지 시도
+ col[row] = c;
+ setQueen(row+1);
+ }
+ }
+
+ private static boolean isPromissing(int row) { // row : 마지막으로 놓아진 퀀의 행
+ for(int i=1; i X^n-1/2와 같음
+ private static long exp2(long x, int n) {
+ callCnt2++;
+ if(n==1) return x;
+ long y = exp2(x, n/2);
+ return (n%2==0) ? y*y : y*y*x;
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.java"
new file mode 100644
index 0000000..856ab7a
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/AdjMatrixTest.java"
@@ -0,0 +1,145 @@
+package KSY.personal.AlgoURa.주차8;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayDeque;
+import java.util.Arrays;
+import java.util.Queue;
+import java.util.Scanner;
+
+//무향 그래프
+public class AdjMatrixTest {
+
+ //Node(인접 리스트)
+ static class Node{
+ int vertex;
+ Node next;
+
+ public Node(int vertex, Node next) {
+ super();
+ this.vertex = vertex;
+ this.next = next;
+ }
+ @Override
+ public String toString() {
+ return "Node [vertex=" + vertex + ", next=" + next.toString()+ "]";
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("graph_input2.txt"));
+ Scanner sc = new Scanner(System.in);
+ int V = sc.nextInt();
+ int E = sc.nextInt();
+
+ Node adjList[] = new Node[V]; // 헤드리스트
+
+ int[][] adjMatrix = new int[V][V]; // 초기값 0
+ // 간선 있으면 1, 없으면 0
+
+ for(int i=0; i < E; i++) {
+ int from = sc.nextInt();
+ int to = sc.nextInt();
+// 인접행렬
+ adjMatrix[from][to] = 1;
+ adjMatrix[to][from] = 1;
+
+ //인접리스트
+ adjList[from] = new Node(to, adjList[from]); // 연결된 순서는 상관없으므로 가능한 연산(from과 연결된 아이들끼리의 관계는 아무것도 없음)
+ adjList[to] = new Node(from, adjList[to]);
+ }
+
+// for(int[] is : adjMatrix) {
+// System.out.println(Arrays.toString(is));
+// }
+// for(Node node : adjList) { // node : 각 정점의 인접리스트의 헤드
+// System.out.println(node);
+// }
+
+ //BFS
+// bfs(adjMatrix);
+// bfs(adjList);
+
+ //DFS
+// dfs(adjMatrix, new boolean[V], 0);
+ dfs(adjList, new boolean[V], 0); // 인접 리스트의 앞으로 연결했기 때문에 결과가 다를 수 있음
+ }
+
+ // 인접 행렬 BFS
+ private static void bfs(int[][] adjMatrix) {
+ int size = adjMatrix.length;
+ Queue que = new ArrayDeque<>(); // 큐에 넣는 값은 방문대상을 관리할 값과 그밖의 값들이 될 수 있다.
+ boolean[] visited = new boolean[size];
+
+ //탐색 시작점 정점0으로 하자
+ que.offer(0);
+ visited[0] = true;
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (int i = 0; i < size; i++) {
+ if(adjMatrix[curr][i] != 0 && !visited[i]) { // 인접해있고 방문하지 않았다면
+ que.offer(i);
+ visited[i] = true;
+ }
+ }
+ }
+
+
+ }
+
+ // 인접 리스트 BFS
+ private static void bfs(Node adjList[]) {
+ int size = adjList.length;
+ Queue que = new ArrayDeque<>(); // 큐에 넣는 값은 방문대상을 관리할 값과 그밖의 값들이 될 수 있다.
+ boolean[] visited = new boolean[size];
+
+ //탐색 시작점 정점0으로 하자
+ que.offer(0);
+ visited[0] = true;
+
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (Node temp = adjList[curr]; temp!=null; temp=temp.next) {
+ if(!visited[temp.vertex]) { // 인접해있고 방문하지 않았다면
+ que.offer(temp.vertex);
+ visited[temp.vertex] = true;
+ }
+ }
+ }
+
+
+ }
+
+ // 인접 행렬 DFS
+ private static void dfs(int[][] adjMatrix, boolean[] visited, int curr) {
+ visited[curr] = true;
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (int i = 0; i < adjMatrix.length; i++) {
+ if(adjMatrix[curr][i] != 0 && !visited[i]) { // 인접해있고 방문하지 않았다면
+ dfs(adjMatrix, visited, i);
+ }
+ }
+ }
+
+ private static void dfs(Node adjList[], boolean[] visited, int curr) {
+ visited[curr] = true;
+ System.out.println((char)(curr+65));
+
+ //현 정점의 인접정점들 체크하며 대기열에 넣기
+ for (Node temp = adjList[curr]; temp != null; temp = temp.next) {
+ if(!visited[temp.vertex]) { // 인접해있고 방문하지 않았다면
+ dfs(adjList, visited, temp.vertex);
+ }
+ }
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.java"
new file mode 100644
index 0000000..3f07aa2
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DijkstraTest.java"
@@ -0,0 +1,81 @@
+package KSY.personal.AlgoURa.주차8;
+
+import java.util.*;
+import java.io.*;
+
+public class DijkstraTest {
+
+ //TODO : 다익스트라 샘플문제 풀어보기
+
+ static class Node{
+ int vertex, weight;
+ Node next;
+
+ public Node(int vertex, int weight, Node next) {
+ this.vertex = vertex;
+ this.weight = weight;
+ this.next = next;
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+// System.setIn(new FileInputStream("dijkstra_input_dege"));
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringTokenizer st = new StringTokenizer(br.readLine().trim());
+ int V = Integer.parseInt(st.nextToken());
+ int E = Integer.parseInt(st.nextToken());
+ st = new StringTokenizer(br.readLine().trim());
+ int start = Integer.parseInt(st.nextToken());
+ int end = Integer.parseInt(st.nextToken());
+
+ Node[] adjList = new Node[V];
+ int[] distance = new int[V];
+ boolean[] visited = new boolean[V];
+
+ for (int i = 0; i < E; i++) {
+ st = new StringTokenizer(br.readLine().trim(), " ");
+ int from = Integer.parseInt(st.nextToken());
+ int to = Integer.parseInt(st.nextToken());
+ int weight = Integer.parseInt(st.nextToken());
+ adjList[from] = new Node(to, weight, adjList[from]);
+
+ }
+
+ final int INF = Integer.MAX_VALUE;
+ Arrays.fill(distance, INF);
+
+ distance[start] = 0;
+ int min=0, stopOver=0;
+ for (int i = 0; i < V; i++) { //모든 정점을 다 처리할 때까지 반복
+ //step1. 미방문 정점중에 출발지에서 가장 가까운 정점 찾기
+ stopOver = -1;
+ min = INF;
+ for (int j = 0; j < V; j++) {
+ if(!visited[j] && min > distance[j]) {
+ min = distance[j];
+ stopOver = j;
+ }
+ }
+ if(stopOver == -1) break;
+
+ //step2. 방문처리
+ visited[stopOver] = true;
+ // 상황에 따라서 처리 : 경우지가 곧 도착디면 끝내기 (출발지에서 모든 정점으로의 최단거리를 구할 때는 break 하지 말기)
+ if(stopOver == end) break;
+
+ //step3. 경유지를 이용하여 미방문 정점들의 출발지에서 자신으로의 최소비용 고려
+ for(Node temp = adjList[stopOver]; temp != null; temp = temp.next) {
+ // 해당 정점이 방문 정점이 아니고 현재 정점에서 갈 수 있는 정점의 경우
+ // 경유지 정점을 거쳐서 해당 점점을 갈 경우의 최단거리와 기존까지 계산된 해당정점까지의 최단거리를 비교하여 최소값을 만족하면 갱신
+ if(!visited[temp.vertex] && distance[temp.vertex] > min+temp.weight) {
+ distance[temp.vertex] = min+temp.weight;
+ }
+ }
+
+ }
+ System.out.println(distance[end] != INF ? distance[end] : -1);
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.java"
new file mode 100644
index 0000000..d2a4142
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/DisjoinSetTest.java"
@@ -0,0 +1,82 @@
+package KSY.personal.AlgoURa.주차8;
+
+import java.util.Arrays;
+
+public class DisjoinSetTest {
+
+ static int N; // 초기 집합의 개수
+ static int parents[];
+
+ private static void make() {
+ parents = new int[N];
+ for(int i=0; i< N; i++) {
+ parents[i] = i; // 모든 요소는 자기만 원소로 갖는 단위 서로소 집합이 되게 한다.(자신이 곧 대표자, 루트로 표현)
+ }
+ }
+
+ private static int find(int a) {
+ // path compression 1
+// if(a != parents[a]) {
+// parents[a] = find(parents[a]); // path compression
+// }
+// return parents[a];
+
+ // path compression 2
+ // 경로압축이 일어난다고 Rank에 변화가 생기지 않는다.
+ // Rank 관리가 쉽지 않다 => 매번 find에서 변경시 오버헤드가 생길 수 있다.
+ // Rank 관리를 Union에서 하고, find할 때는 수행하지 않는 것이 대부분의 코딩 방식이다.
+ if(parents[a] == a) return a;
+ return parents[a] = find(parents[a]);
+
+
+ // Before 최적화
+// if(a == parents[a]) return a;
+// return find(parents[a]);
+ }
+
+ private static boolean union(int a, int b) { // a가 속한 집합과 b가 속한 집합을 합칠 수 있다면 합치고 true 반환, 아니면 false 반
+ int aRoot = find(a);
+ int bRoot = find(b);
+
+ //teacher
+ if(aRoot == bRoot) return false; // 서로의 대표자가 같은 즉, 같은 집합의 상황이므로 union하지 않음.
+ //union 처리( bRoot를 aRoot 아래로 붙이기!! : 임의로 ...)
+ parents[bRoot] = aRoot;
+ return true;
+
+ }
+
+
+ public static void main(String[] args) {
+ N = 5;
+ make();
+// System.out.println("find(0) :" + find(0));
+// System.out.println("find(1) :" + find(1));
+// System.out.println("find(2) :" + find(2));
+// System.out.println("find(3) :" + find(3));
+// System.out.println("find(4) :" + find(4));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(union(0, 1));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(union(2, 1));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(union(3, 2));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(union(4, 3));
+ System.out.println(Arrays.toString(parents));
+
+ System.out.println("\n=======find========");
+ System.out.println(find(4));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(find(3));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(find(2));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(find(0));
+ System.out.println(Arrays.toString(parents));
+ System.out.println(find(1));
+ System.out.println(Arrays.toString(parents));
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.java"
new file mode 100644
index 0000000..f0e260f
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrim.java"
@@ -0,0 +1,58 @@
+package KSY.personal.AlgoURa.주차8;
+
+import java.io.*;
+import java.util.*;
+
+public class MSTPrim {
+
+ static int V, adjMatrix[][];
+
+ public static void main(String[] args) throws NumberFormatException, IOException {
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ V = Integer.parseInt(in.readLine());
+ adjMatrix = new int[V][V];
+
+ for (int i = 0; i < V; i++) {
+ StringTokenizer st = new StringTokenizer(in.readLine(), " ");
+ for (int j = 0; j < V; j++) {
+ adjMatrix[i][j] = Integer.parseInt(st.nextToken());
+ }
+ }
+
+ boolean[] visited = new boolean[V];
+ int[] minEdge = new int[V]; // 자신과 트리의 정점들 간 최소 간선 비용
+
+ Arrays.fill(minEdge, Integer.MAX_VALUE); // 최소값 갱신 위한 큰 값으로 세팅
+ minEdge[0] = 0; // 임의 정점 0을 시작점으로 초기화
+
+ int result = 0; // 최소신장트리 비용
+ int min = 0, minVertex;
+
+ for (int c = 0; c < V; c++) {
+ minVertex = -1;
+ min = Integer.MAX_VALUE;
+ // step1 : 미방문(비트리) 정점 중 최소간선비용의 정점을 선택
+ for (int i = 0; i < V; i++) {
+ if (!visited[i] && min > minEdge[i]) { // 임시 후보 i 찾음
+ minVertex = i;
+ min = minEdge[i];
+ }
+ }
+
+ // step2 : 방문(트리) 정점에 추가
+ visited[minVertex] = true; // 방문처리
+ result += min; // 신장트리 비용 누적
+
+ // step3 : 트리에 추가된 새로운 정점 기준으로 비트리 정점과의 간선비용 고려 (a.k.a 영업타임)
+ for (int i = 0; i < V; i++) {
+ if (!visited[i] && adjMatrix[minVertex][i] != 0 && minEdge[i] > adjMatrix[minVertex][i]) {
+ minEdge[i] = adjMatrix[minVertex][i]; // 방금 선택된 간선과 연결된 간선 중
+ }
+ }
+
+ }
+ System.out.println(result); //누적비용 출력
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.java"
new file mode 100644
index 0000000..e86fac7
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2508/MSTPrimPQTest.java"
@@ -0,0 +1,77 @@
+package KSY.personal.AlgoURa.주차8;
+
+import java.io.*;
+import java.util.*;
+
+public class MSTPrimPQTest {
+
+ static class Vertex implements Comparable{
+ int no, weight; // 정점 번호, 트리 특정 정점과 연결했을 때의 간선비용
+
+ public Vertex(int no, int weight) {
+ super();
+ this.no = no;
+ this.weight = weight;
+ }
+
+ @Override
+ public int compareTo(Vertex o) {
+ return Integer.compare(this.weight, o.weight);
+ }
+
+
+ }
+
+ static int V, adjMatrix[][];
+
+ public static void main(String[] args) throws NumberFormatException, IOException {
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ V = Integer.parseInt(in.readLine());
+ adjMatrix = new int[V][V];
+
+ for (int i = 0; i < V; i++) {
+ StringTokenizer st = new StringTokenizer(in.readLine(), " ");
+ for (int j = 0; j < V; j++) {
+ adjMatrix[i][j] = Integer.parseInt(st.nextToken());
+ }
+ }
+
+ // 방문정점(트리정점표시)
+ boolean[] visited = new boolean[V];
+ int[] minEdge = new int[V]; // 자신과 트리의 정점들 간 최소 간선 비용
+ PriorityQueue pQueue = new PriorityQueue<>();
+
+ Arrays.fill(minEdge, Integer.MAX_VALUE); // 최소값 갱신 위한 큰 값으로 세팅
+ minEdge[0] = 0; // 임의 정점 0을 시작점으로 초기화
+ pQueue.offer(new Vertex(0, minEdge[0]));
+
+ int result = 0; // 최소신장트리 비용
+ int min = 0, minVertex=0, cnt = 0;
+
+ while (pQueue.isEmpty()) {
+ // step1 : 미방문(비트리) 정점 중 최소간선비용의 정점을 선택
+ Vertex cur = pQueue.poll();
+ minVertex = cur.no;
+ min = cur.weight;
+
+ if(visited[minVertex]) continue; // 고인물 제거
+
+ // step2 : 방문(트리) 정점에 추가
+ visited[minVertex] = true; // 방문처리
+ result += min; // 신장트리 비용 누적
+ if(++cnt == V) break;
+
+ // step3 : 트리에 추가된 새로운 정점 기준으로 비트리 정점과의 간선비용 고려 (a.k.a 영업타임)
+ for (int i = 0; i < V; i++) {
+ if (!visited[i] && adjMatrix[minVertex][i] != 0 && minEdge[i] > adjMatrix[minVertex][i]) {
+ minEdge[i] = adjMatrix[minVertex][i]; // 방금 선택된 간선과 연결된 간선 중
+ pQueue.offer(new Vertex(i, minEdge[i]));
+ }
+ }
+
+ }
+ System.out.println(result); //누적비용 출력
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.java"
new file mode 100644
index 0000000..b9f94f2
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/BinomialCoefTest.java"
@@ -0,0 +1,24 @@
+package KSY.personal.AlgoURa.주차9;
+
+import java.util.Scanner;
+
+public class BinomialCoefTest {
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ int N = sc.nextInt();
+ int K = sc.nextInt();
+
+ int[][] B = new int[N+1][N+1];
+
+ for(int i=0; i<=N; i++) {
+ for(int j=0, end = Math.min(i, K); j <=end ; j++) { // end = Math.min(i, K) 도 가능
+ if( j== 0 || i == j) B[i][j] = 1;
+ else B[i][j] = B[i-1][j-1] + B[i-1][j];
+ }
+ }
+ System.out.println(B[N][K]);
+
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.java"
new file mode 100644
index 0000000..0fd1925
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/FibonacciTest.java"
@@ -0,0 +1,50 @@
+package KSY.personal.AlgoURa.주차9;
+
+import java.util.*;
+
+public class FibonacciTest {
+
+ static long totalCnt1, totalCnt2, callCnt1[], callCnt2[], memo[];
+
+ private static long fibo1(int n) { // 피보나치 n항 구하기
+ totalCnt1++;
+ callCnt1[n]++;
+ if(n<2) return n;
+ return fibo1(n-1) + fibo1(n-2);
+ }
+
+ private static long fibo2(int n) {
+ totalCnt2++;
+ callCnt2[n]++;
+ if(memo[n] != -1) return memo[n];
+ return memo[n] = fibo2(n-1) + fibo2(n-2);
+ }
+
+ public static void main(String[] args) {
+
+ Scanner sc = new Scanner(System.in);
+ int N = sc.nextInt();
+
+ totalCnt1 = totalCnt2 = 0;
+ callCnt1 = new long[N+1];
+ callCnt2 = new long[N+1];
+ memo = new long[N+1];
+
+ Arrays.fill(memo, -1); // 메모되지 않은 상태를 나타내는 값으로 초기화
+ // 유도되어 값이 저장되지 않는 것 초기화
+ memo[0] = 0;
+ memo[1] = 1;
+
+ System.out.println(fibo1(N));
+ System.out.println("fibo1 : " + totalCnt1); // fibo1 : 3672623805
+ for (int i = 0; i <= N; i++) {
+ System.out.println("fibo1["+i+"] : " + callCnt1[i]);
+ }
+ System.out.println("=======================================");
+ System.out.println(fibo2(N)); // fibo2 : 89
+ System.out.println("fibo2 : " + totalCnt2);
+ for (int i = 0; i <= N; i++) {
+ System.out.println("fibo2["+i+"] : " + callCnt2[i]);
+ }
+ }
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.java"
new file mode 100644
index 0000000..db1d592
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/MinCoinTest.java"
@@ -0,0 +1,26 @@
+package KSY.personal.AlgoURa.주차9;
+
+import java.util.Scanner;
+
+public class MinCoinTest {
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ int money = sc.nextInt(); // 교환 금액
+
+ int[] D = new int[money+1];
+ D[0] = 0;
+
+ for(int i=1; i<= money; i++) {
+ //1원 시도
+ D[i] = D[i-1]+1;
+ //4원 시도
+ if(i>=4 && D[i] > D[i-4]+1) D[i] = D[i-4]+1;
+ //6원 시도
+ if(i>=6 && D[i] > D[i-6]+1) D[i] = D[i-6]+1;
+ }
+
+ System.out.println(D[money]);
+ }
+
+}
diff --git "a/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.java" "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.java"
new file mode 100644
index 0000000..9d37d81
--- /dev/null
+++ "b/src/KSY/personal/AlgoURa/\354\243\274\354\260\2509/\355\224\204\353\241\234\354\204\270\354\212\244\354\227\260\352\262\260\355\225\230\352\270\260.java"
@@ -0,0 +1,120 @@
+package KSY.personal.AlgoURa.주차9;
+
+import java.io.*;
+import java.util.*;
+
+public class 프로세스연결하기 {
+
+ static int N, max, totalCnt, min, map[][];
+ static int[] dr = { -1, 1, 0, 0 };
+ static int[] dc = { 0, 0, -1, 1 };
+ static ArrayList list;
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int TC = Integer.parseInt(br.readLine());
+ for (int test = 1; test <= TC; test++) {
+ N = Integer.parseInt(br.readLine());
+ map = new int[N][N];
+ max = 0;
+ min = Integer.MAX_VALUE;
+ totalCnt = 0;
+ list = new ArrayList();
+
+ for (int i = 0; i < N; i++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for (int j = 0; j < N; j++) {
+ map[i][j] = Integer.parseInt(st.nextToken());
+ // 가장자리 코어 제외
+ if (i == 0 || i == N - 1 || j == 0 || j == N - 1)
+ continue;
+ if (map[i][j] == 1) {
+ list.add(new int[] { i, j });
+ totalCnt++;
+ }
+ }
+ }
+
+ go(0, 0);
+ System.out.println("#" + test + " " + min);
+
+ }
+ }
+
+ // 코어를 선택(4방향 시도) / 비선택
+ private static void go(int index, int coreCnt) { // index : 고려 할 코어 번호, coreCnt : 연결된 코어 개수
+ // 가지 치기 : 현재까지 연결된 코어 수 + 남은 코어 수 < 임시 최대 코어 연결 수
+ if (coreCnt + (totalCnt - index) < max)
+ return;
+ // 기저 조건 처리
+ if (index == totalCnt) {
+ int res = getLength(); // 놓아진 전선의 길이의 합
+ if (max < coreCnt) {
+ max = coreCnt;
+ min = res;
+ } else if (max == coreCnt) {
+ if (min > res) {
+ min = res;
+ }
+ }
+ return;
+ }
+
+ int[] cur = list.get(index);
+ int row = cur[0];
+ int col = cur[1];
+
+ // 현재 코어를 선택
+ for (int d = 0; d < 4; d++) {
+ if (!isAvailable(row, col, d))
+ continue;
+ setStatus(row, col, d, 2);
+ go(index + 1, coreCnt + 1);
+ setStatus(row, col, d, 0);
+ }
+ go(index + 1, coreCnt);
+
+ // 현재 코어를 비선택
+ }
+
+ private static int getLength() {
+ int lCnt = 0;
+ for (int i = 0; i < N; i++) {
+ for (int j = 0; j < N; j++) {
+ if (map[i][j] == 2) {
+ lCnt++;
+ }
+ }
+ }
+ return lCnt;
+ }
+
+ private static boolean isAvailable(int r, int c, int d) {
+ int nr = r;
+ int nc = c;
+ while (true) {
+ nr += dr[d];
+ nc += dc[d];
+ if (nr < 0 || nr > N - 1 || nc < 0 || nc > N - 1)
+ break;
+ if (map[nr][nc] != 0)
+ return false;
+ }
+ return true;
+ }
+
+ private static boolean setStatus(int r, int c, int d, int status) {
+ int nr = r;
+ int nc = c;
+ while (true) {
+ nr += dr[d];
+ nc += dc[d];
+ if (nr < 0 || nr > N - 1 || nc < 0 || nc > N - 1)
+ break;
+ map[nr][nc] = status;
+
+ }
+ return true;
+ }
+
+}
diff --git "a/src/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.java" "b/src/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.java"
new file mode 100644
index 0000000..dd003e2
--- /dev/null
+++ "b/src/KSY/personal/BeforeLunch/BJ2252_\354\244\204\354\204\270\354\232\260\352\270\260.java"
@@ -0,0 +1,61 @@
+package KSY.personal.BeforeLunch;
+
+import java.io.*;
+import java.util.*;
+
+public class BJ2252_줄세우기 {
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("input1.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter sw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ String[] oneLine = br.readLine().split(" ");
+
+ int N = Integer.parseInt(oneLine[0]);
+ int M = Integer.parseInt(oneLine[1]);
+
+ ArrayList[] g = new ArrayList[N+1];
+
+ for(int i=1; i<=N; i++) {
+ g[i] = new ArrayList();
+ }
+
+ int indegree[] = new int[N+1]; // 1~N
+ for (int i = 0; i < M; i++) {
+ String[] M_input = br.readLine().split(" ");
+ int front = Integer.parseInt(M_input[0]);
+ int back = Integer.parseInt(M_input[1]);
+ g[front].add(back);
+ indegree[back]++;
+ }
+
+
+ //처리
+ Queue que = new ArrayDeque<>();
+ for (int i = 1; i <=N; i++) {
+ if(indegree[i] == 0) { // 진입차수가 0인 노드(시작점)를 큐에 삽입
+ que.offer(i);
+ }
+ }
+
+ while (!que.isEmpty()) {
+ int curr = que.poll();
+ sb.append(curr).append(" ");
+
+ for (int v: g[curr]) { // 꺼낸 노드와 연결된 모든 노드 방문하며 개수 차감
+ if(--indegree[v] == 0) {
+ que.offer(v);
+ }
+ }
+ }
+
+ sw.write(sb.toString());
+ sw.flush();
+ sw.close();
+
+
+ } // main end
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt"
new file mode 100644
index 0000000..0fa4694
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/input.txt"
@@ -0,0 +1,7 @@
+3
+4
+1 1 2
+4
+1 1 3
+11
+1 1 3 3 2 4 1 3 2 9
\ No newline at end of file
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.java"
new file mode 100644
index 0000000..5652968
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254main.java"
@@ -0,0 +1,103 @@
+package KSY.personal.B형특강.회차1;
+
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+class 병사관리main
+{
+ private final static int CMD_INIT = 1;
+ private final static int CMD_HIRE = 2;
+ private final static int CMD_FIRE = 3;
+ private final static int CMD_UPDATE_SOLDIER = 4;
+ private final static int CMD_UPDATE_TEAM = 5;
+ private final static int CMD_BEST_SOLDIER = 6;
+
+ private final static 병사관리userCode usersolution = new 병사관리userCode();
+
+ private static boolean run(BufferedReader br) throws Exception
+ {
+ StringTokenizer st;
+
+ int numQuery;
+
+ int mID, mTeam, mScore, mChangeScore;
+
+ int userAns, ans;
+
+ boolean isCorrect = false;
+
+ numQuery = Integer.parseInt(br.readLine());
+
+ for (int q = 0; q < numQuery; ++q)
+ {
+ st = new StringTokenizer(br.readLine(), " ");
+
+ int cmd;
+ cmd = Integer.parseInt(st.nextToken());
+
+ switch(cmd)
+ {
+ case CMD_INIT:
+ usersolution.init();
+ isCorrect = true;
+ break;
+ case CMD_HIRE:
+ mID = Integer.parseInt(st.nextToken());
+ mTeam = Integer.parseInt(st.nextToken());
+ mScore = Integer.parseInt(st.nextToken());
+ usersolution.hire(mID, mTeam, mScore);
+ break;
+ case CMD_FIRE:
+ mID = Integer.parseInt(st.nextToken());
+ usersolution.fire(mID);
+ break;
+ case CMD_UPDATE_SOLDIER:
+ mID = Integer.parseInt(st.nextToken());
+ mScore = Integer.parseInt(st.nextToken());
+ usersolution.updateSoldier(mID, mScore);
+ break;
+ case CMD_UPDATE_TEAM:
+ mTeam = Integer.parseInt(st.nextToken());
+ mChangeScore = Integer.parseInt(st.nextToken());
+ usersolution.updateTeam(mTeam, mChangeScore);
+ break;
+ case CMD_BEST_SOLDIER:
+ mTeam = Integer.parseInt(st.nextToken());
+ userAns = usersolution.bestSoldier(mTeam);
+ ans = Integer.parseInt(st.nextToken());
+ if (userAns != ans) {
+ isCorrect = false;
+ }
+ break;
+ default:
+ isCorrect = false;
+ break;
+ }
+ }
+
+ return isCorrect;
+ }
+
+ public static void main(String[] args) throws Exception
+ {
+ int TC, MARK;
+
+ //System.setIn(new java.io.FileInputStream("res/sample_input.txt"));
+
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringTokenizer st = new StringTokenizer(br.readLine(), " ");
+
+ TC = Integer.parseInt(st.nextToken());
+ MARK = Integer.parseInt(st.nextToken());
+
+ for (int testcase = 1; testcase <= TC; ++testcase)
+ {
+ int score = run(br) ? MARK : 0;
+ System.out.println("#" + testcase + " " + score);
+ }
+
+ br.close();
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.java"
new file mode 100644
index 0000000..330518b
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\353\263\221\354\202\254\352\264\200\353\246\254userCode.java"
@@ -0,0 +1,108 @@
+package KSY.personal.B형특강.회차1;
+
+import java.util.*;
+
+public class 병사관리userCode {
+
+ private Set Soldiers; // id -> team, score
+
+ public void init()
+ {
+ Soldiers = new HashSet<>(); // 병사관리 리스트 생성
+ }
+
+ public void hire(int mID, int mTeam, int mScore)
+ {
+ Soldiers.add(new Soldier(mID, mTeam, mScore));
+ //System.out.println(mID + "병사 추가");
+ }
+
+ public void fire(int mID)
+ {
+ for(Soldier soldier : Soldiers) {
+ if(soldier.mID == mID) {
+ Soldiers.remove(soldier);
+ //System.out.println(mID + "병사 제거");
+ return;
+ }
+ }
+ //해당하는 병사 찾지 못 함
+ }
+
+ public void updateSoldier(int mID, int mScore)
+ {
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mID == mID) {
+ soldier.mScore = mScore;
+ break;
+ }
+ }
+ }
+
+ public void updateTeam(int mTeam, int mChangeScore)
+ {
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mTeam == mTeam) {
+ if(soldier.mScore + mChangeScore > 5)
+ soldier.mScore = 5;
+ else if(soldier.mScore + mChangeScore < 1)
+ soldier.mScore = 1;
+ else
+ soldier.mScore = soldier.mScore + mChangeScore;
+ }
+ }
+ }
+
+ public int bestSoldier(int mTeam)
+ {
+ int maxTeamValue = 0, theID=0;
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mScore > maxTeamValue) {
+ theID = soldier.mID;
+ maxTeamValue = soldier.mScore;
+ }
+ }
+ return theID;
+ }
+
+ class soldier{
+ private int mID;
+ private int mTeam;
+ private int mScore;
+ public int getmID() {
+ return mID;
+ }
+ public void setmID(int mID) {
+ this.mID = mID;
+ }
+ public int getmTeam() {
+ return mTeam;
+ }
+ public void setmTeam(int mTeam) {
+ this.mTeam = mTeam;
+ }
+ public int getmScore() {
+ return mScore;
+ }
+ public void setmScore(int mScore) {
+ this.mScore = mScore;
+ }
+ }
+
+}
+
+class Soldier {
+ int mID, mTeam, mScore;
+ Soldier(int mID, int mTeam, int mScore){
+ this.mID = mID; this.mTeam = mTeam; this.mScore = mScore;
+ }
+ @Override
+ public int hashCode() {
+ return mID;
+ }
+ @Override
+ public boolean equals(Object obj) {
+ return mID == ((Soldier)obj).mID;
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.java"
new file mode 100644
index 0000000..d80fbd6
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\203\210\353\241\234\354\232\264\353\266\210\353\251\264\354\246\235\354\271\230\353\243\214\353\262\225.java"
@@ -0,0 +1,40 @@
+package KSY.personal.B형특강.회차1;
+import java.util.*;
+import java.io.*;
+
+// Set, BitMasking ... 등의 방법으로 풀이할 수 있음
+
+public class 새로운불면증치료법 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+ int T = Integer.parseInt(br.readLine());
+
+ for(int i=0; i 0) {
+ if((flag & (1 << temp%10)) == 0){
+ flag = flag | (1 << temp%10);
+ }
+ temp/=10;
+ }
+ if(flag == mask){
+ break;
+ }
+ }
+ sb.append("#").append(i).append(" ").append(answer).append("\n");
+
+ }
+ System.out.println(sb);
+
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.java"
new file mode 100644
index 0000000..3ca5a3d
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\210\230\354\227\264\355\216\270\354\247\221.java"
@@ -0,0 +1,53 @@
+package KSY.personal.B형특강.회차1;
+import java.util.*;
+import java.io.*;
+
+public class 수열편집 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int T = Integer.parseInt(br.readLine());
+
+ for(int test=1; test<=T; test++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int L = Integer.parseInt(st.nextToken());
+ List nums = new LinkedList<>();
+
+ //수열
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i L) {
+ System.out.println("#"+test+" " + nums.get(L));
+ } else {
+ System.out.println("#"+test+" -1");
+
+ }
+ }
+
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.java"
new file mode 100644
index 0000000..5dc81b3
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2501/\354\225\224\355\230\270\353\254\2703.java"
@@ -0,0 +1,51 @@
+package KSY.personal.B형특강.회차1;
+import java.util.*;
+import java.io.*;
+
+public class 암호문3 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+
+ for(int test=1; test<=10; test++) {
+ int N = Integer.parseInt(br.readLine());
+ List list = new LinkedList<>();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for(int i=0; i '&' 연산자!!
+
+public class 이진수표현 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int T = Integer.parseInt(br.readLine());
+
+ for(int test=1; test<=T; test++) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+// (내풀이)
+// Deque que = new ArrayDeque<>();
+// while(M>0) {
+// que.offer(M%2);
+// M /= 2;
+// }
+//
+// boolean flag = false;
+// for(int i=0; i> graph;
+ static Map> parents;
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/personal/B형특강/input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ StringTokenizer st = new StringTokenizer(br.readLine()); // V, E, v1, v2
+ graph = new HashMap<>();
+ parents = new HashMap<>();
+
+ int V = Integer.parseInt(st.nextToken());
+ int E = Integer.parseInt(st.nextToken());
+ int v1 = Integer.parseInt(st.nextToken());
+ int v2 = Integer.parseInt(st.nextToken());
+
+ int[] nodes = new int[V+1];
+
+ for(int i=1; i<=V; i++) {
+ graph.put(i, new ArrayList<>());
+ parents.put(i, new ArrayList<>());
+ }
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i Soldiers; // id -> team, score
+
+ public void init()
+ {
+ Soldiers = new HashSet<>(); // 병사관리 리스트 생성
+ }
+
+ public void hire(int mID, int mTeam, int mScore)
+ {
+ Soldiers.add(new Soldier(mID, mTeam, mScore));
+ //System.out.println(mID + "병사 추가");
+ }
+
+ public void fire(int mID)
+ {
+ for(Soldier soldier : Soldiers) {
+ if(soldier.mID == mID) {
+ Soldiers.remove(soldier);
+ //System.out.println(mID + "병사 제거");
+ return;
+ }
+ }
+ //해당하는 병사 찾지 못 함
+ }
+
+ public void updateSoldier(int mID, int mScore)
+ {
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mID == mID) {
+ soldier.mScore = mScore;
+ break;
+ }
+ }
+ }
+
+ public void updateTeam(int mTeam, int mChangeScore)
+ {
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mTeam == mTeam) {
+ if(soldier.mScore + mChangeScore > 5)
+ soldier.mScore = 5;
+ else if(soldier.mScore + mChangeScore < 1)
+ soldier.mScore = 1;
+ else
+ soldier.mScore = soldier.mScore + mChangeScore;
+ }
+ }
+ }
+
+ public int bestSoldier(int mTeam)
+ {
+ int maxTeamValue = 0, theID=0;
+ for(Soldier soldier: Soldiers) {
+ if(soldier.mScore > maxTeamValue) {
+ theID = soldier.mID;
+ maxTeamValue = soldier.mScore;
+ }
+ }
+ return theID;
+ }
+
+ class soldier{
+ private int mID;
+ private int mTeam;
+ private int mScore;
+ public int getmID() {
+ return mID;
+ }
+ public void setmID(int mID) {
+ this.mID = mID;
+ }
+ public int getmTeam() {
+ return mTeam;
+ }
+ public void setmTeam(int mTeam) {
+ this.mTeam = mTeam;
+ }
+ public int getmScore() {
+ return mScore;
+ }
+ public void setmScore(int mScore) {
+ this.mScore = mScore;
+ }
+ }
+
+}
+
+class Soldier {
+ int mID, mTeam, mScore;
+ Soldier(int mID, int mTeam, int mScore){
+ this.mID = mID; this.mTeam = mTeam; this.mScore = mScore;
+ }
+ @Override
+ public int hashCode() {
+ return mID;
+ }
+ @Override
+ public boolean equals(Object obj) {
+ return mID == ((Soldier)obj).mID;
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.java"
new file mode 100644
index 0000000..e20c546
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\230\201\354\244\200\354\235\264\354\235\230\354\247\204\354\247\234BFS.java"
@@ -0,0 +1,58 @@
+package KSY.personal.B형특강.회차2;
+
+import java.io.*;
+import java.util.*;
+
+public class 영준이의진짜BFS {
+
+ static Map> graph;
+ static boolean[] visited;
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/personal/B형특강/input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+
+ int N = Integer.parseInt(br.readLine());
+ graph = new HashMap<>();
+ visited = new boolean[N+1];
+
+ for(int i=1; i<=N; i++) {
+ graph.put(i, new ArrayList<>());
+ }
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for(int i=2; i<=N; i++) {
+ int parent = Integer.parseInt(st.nextToken());
+ graph.get(parent).add(i);
+ }
+
+ Queue que = new ArrayDeque<>();
+ que.offer(1);
+ visited[1] = true;
+ int answer = 0;
+ while(!que.isEmpty()) {
+ int curr = que.poll();
+ System.out.print(curr+ " ");
+ answer++;
+ for(int v: graph.get(curr)) {
+ if(!visited[v]) {
+ que.offer(v);
+ }
+ }
+ }
+ System.out.println();
+ sb.append("#").append(test).append(" ").append(answer).append("\n");
+
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.java"
new file mode 100644
index 0000000..2229a1b
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\354\244\221\354\234\204\354\210\234\355\232\214.java"
@@ -0,0 +1,63 @@
+package KSY.personal.B형특강.회차2;
+
+import java.io.*;
+import java.util.*;
+
+public class 중위순회 {
+ static Node[] nodes;
+ static String[] vertexes;
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/personal/B형특강/input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int N = Integer.parseInt(br.readLine());
+ nodes = new Node[N+1];
+ vertexes = new String[N+1];
+
+ for(int i=1; i<=N; i++) {
+// Node node = new Node();
+ StringTokenizer st = new StringTokenizer(br.readLine()); // 정점번호, 문장, 왼쪽 자식, 오른쪽 자식
+ int index = Integer.parseInt(st.nextToken());
+ String word = st.nextToken();
+
+// if(st.hasMoreTokens()) // 자식이 있음
+// node.right = Integer.parseInt(st.nextToken());
+// st.ne
+// if(st.hasMoreTokens()) // 자식이 있음
+// node.left = Integer.parseInt(st.nextToken());
+// while(st.hasMoreTokens()) {
+// st.nextToken();
+// }
+
+// nodes[node.index] = node;
+ vertexes[i] = word;
+
+ }
+
+
+
+ sb.append("#").append(test).append(" ").append(false);
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+ private static void DFS(int vertex) {
+ if(vertex > )
+ DFS(vertex.left);
+ }
+
+}
+
+class Node{
+ int index;
+ Node right, left;
+ String word;
+}
\ No newline at end of file
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.java"
new file mode 100644
index 0000000..e0f66c3
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2502/\355\214\214\355\225\221\355\214\214\355\225\221\354\247\200\353\242\260\354\260\276\352\270\260.java"
@@ -0,0 +1,10 @@
+package KSY.personal.B형특강.회차2;
+
+public class 파핑파핑지뢰찾기 {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.java"
new file mode 100644
index 0000000..9ca8960
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2503/S2930_\355\236\231.java"
@@ -0,0 +1,48 @@
+package KSY.personal.B형특강.회차3;
+
+import java.util.*;
+import java.io.*;
+
+public class S2930_힙 {
+
+ public static void main(String[] args) throws IOException {
+// System.setIn(new FileInputStream("src/KSY/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int N = Integer.parseInt(br.readLine());
+ int answer=0;
+
+ PriorityQueue pQue = new PriorityQueue<>(Collections.reverseOrder());
+
+ sb.append("#").append(test).append(" ");
+ for(int i=0; i K)
+// return;
+// Knapsack(idx+1, value+items[idx][1], weight+items[idx][0]);
+// Knapsack(idx+1, value, weight);
+//
+// }
+
+}
diff --git "a/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.java" "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.java"
new file mode 100644
index 0000000..dbc99b7
--- /dev/null
+++ "b/src/KSY/personal/B\355\230\225\355\212\271\352\260\225/\355\232\214\354\260\2505/\354\264\233\353\266\210\354\235\264\353\262\244\355\212\270.java"
@@ -0,0 +1,22 @@
+package KSY.personal.B형특강.회차5;
+
+import java.util.*;
+import java.io.*;
+
+public class 촛불이벤트 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int N = Integer.parseInt(br.readLine()); //양초의 개수
+
+
+ }
+
+ }
+
+}
diff --git "a/src/KSY/personal/Practice/21609 \354\203\201\354\226\264 \354\244\221\355\225\231\352\265\220.py" "b/src/KSY/personal/Practice/21609 \354\203\201\354\226\264 \354\244\221\355\225\231\352\265\220.py"
new file mode 100644
index 0000000..11aed22
--- /dev/null
+++ "b/src/KSY/personal/Practice/21609 \354\203\201\354\226\264 \354\244\221\355\225\231\352\265\220.py"
@@ -0,0 +1,127 @@
+import sys
+from collections import deque
+import copy
+input = sys.stdin.readline
+
+dr = [1, 0, -1, 0]
+dc = [0, 1, 0, -1]
+
+n, m = map(int, input().split())
+board = [[] for _ in range(n)]
+visited = [[False] * n for _ in range(n)]
+
+# input
+for i in range(n):
+ board[i] = list(map(str, input().split()))
+
+
+def BFS(row, col):
+ if visited[row][col]:
+ return []
+ visited[row][col] = True
+ que = deque([(row, col)])
+ blocks = [(row, col)]
+
+ while que:
+ point = que.popleft()
+ for i in range(4):
+ r = point[0] + dr[i]
+ c = point[1] + dc[i]
+ if (-1 < r < n and -1 < c < n and not visited[r][c]
+ and (board[r][c] == board[row][col] or board[r][c] == '0')):
+ visited[r][c] = True
+ blocks.append((r, c))
+ que.append((r, c))
+ return blocks
+
+
+# find block group
+def findBlockGroup():
+ maxBlock = []
+ for i in range(n):
+ visited[i] = [False]*n
+
+ for i in range(n):
+ for j in range(n):
+ if board[i][j] != '-1' and board[i][j] != '':
+ blocks = BFS(i, j)
+ lenBlocks = len(blocks)
+ if lenBlocks > 1 and lenBlocks >= len(maxBlock):
+ maxBlock = blocks
+ # print("maxBlock", maxBlock)
+ return maxBlock
+
+# remove blocks
+def removeBlocks(blocks):
+ for r, c in blocks:
+ board[r][c] = ''
+ # print("== remove blocsk ==")
+ # printBoard(board)
+
+# gravity
+def gravity():
+ # print("== before gravity ==")
+ # printBoard(board)
+
+ que = deque([])
+ for col in range(n):
+ row = n-1
+ start = n-1
+ flag = True
+ while row > -1:
+ while row > -1 and board[row][col] == '':
+ if flag:
+ start = row
+ flag = False
+ row -= 1
+ while row > -1 and board[row][col] != '' and board[row][col] != '-1':
+ que.append(board[row][col])
+ board[row][col] = ''
+ row -= 1
+ while que:
+ board[start][col] = que.popleft()
+ start -= 1
+ flag = True
+ row -= 1
+
+ # print("== after gravity ==")
+ # printBoard(board)
+
+# 반시계 방향 회전
+def rotation():
+ tempBoard = [['']*n for _ in range(n)]
+ for i in range(n):
+ for j in range(n):
+ tempBoard[n-1-j][i] = board[i][j]
+ # print("== rotation ==")
+ # printBoard(tempBoard)
+ return tempBoard
+
+def printBoard(board):
+ for i in range(n):
+ print(board[i])
+
+score = 0
+index = 1
+while True:
+ print("index :", index)
+ index += 1
+ blocks = findBlockGroup()
+ if not blocks:
+ break
+ score += len(blocks)*len(blocks)
+ removeBlocks(blocks)
+ print("remove blocks")
+ printBoard(board)
+ gravity()
+ print("gravity1")
+ printBoard(board)
+ board = rotation()
+ print("rotation")
+ printBoard(board)
+ gravity()
+ print("gravity2")
+ printBoard(board)
+
+ print(score)
+ print("----------------------------")
diff --git "a/src/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.java" "b/src/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.java"
new file mode 100644
index 0000000..8a87ecf
--- /dev/null
+++ "b/src/KSY/personal/Practice/S1012_\354\234\240\352\270\260\353\206\215\353\260\260\354\266\224.java"
@@ -0,0 +1,81 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+//13484KB/ 116ms
+
+public class S1012_유기농배추 {
+
+ static int[] dr = new int[] {1, -1, 0, 0};
+ static int[] dc = new int[] {0, 0, 1, -1};
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=0; test que = new ArrayDeque<>();
+
+
+ for(int i=0; i set = new HashSet<>();
+
+ int N = Integer.parseInt(br.readLine());
+ for(int i=0; i numbers;
+ static boolean[] visited;
+ static List answer = new ArrayList<>();
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+
+ st = new StringTokenizer(br.readLine());
+ numbers = new ArrayList<>();
+ visited = new boolean[N];
+
+ for(int i=0; i {sb.append(i).append(" ");});
+ sb.append("\n");
+ return;
+ }
+
+ for(int i=start; i set = new HashSet<>();
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+
+ numbers = new int[N];
+ answer = new int[M];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i0 && p[i-1] <= p[i]) i--;
+ if(i == 0) return false;
+
+ int j = N-1;
+ while(p[i-1] > p[j]) j--;
+ swap(p, i-1, p[j]);
+
+ int k = N-1;
+ while(i set = new HashSet<>();
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+
+ numbers = new int[N];
+ answer = new int[M];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i set = new HashSet<>();
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+
+ numbers = new int[N];
+ answer = new int[M];
+ visited = new boolean[N];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i set = new HashSet<>();
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+
+ numbers = new int[N];
+ answer = new int[M];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i set = new HashSet<>();
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ N = Integer.parseInt(st.nextToken());
+ M = Integer.parseInt(st.nextToken());
+
+ numbers = new int[N];
+ answer = new int[M];
+
+ st = new StringTokenizer(br.readLine());
+ for(int i=0; i que = new ArrayDeque<>();
+ que.offer(new Point(0, 0, 0, 0));
+ while (!que.isEmpty()) {
+ Point curr = que.poll();
+ if (curr.r == H - 1 && curr.c == W - 1) {
+ sb.append(curr.cnt);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ return;
+ }
+
+ if (curr.k < K) { // 말처럼 움직일 수 있음
+ for (int d = 0; d < 8; d++) {
+ int row = curr.r + kdr[d];
+ int col = curr.c + kdc[d];
+ if (-1 < row && row < H && -1 < col && col < W && map[row][col] != 1
+ && !visited[row][col][curr.k+1]) {
+ visited[row][col][curr.k+1] = true;
+ que.offer(new Point(row, col, curr.cnt+1, curr.k + 1));
+ }
+ }
+ }
+
+ // 그냥 이동
+ for (int d = 0; d < 4; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ if (-1 < row && row < H && -1 < col && col < W && map[row][col] != 1 && !visited[row][col][curr.k]) {
+ visited[row][col][curr.k] = true;
+ que.offer(new Point(row, col, curr.cnt + 1, curr.k));
+ }
+ }
+
+ }
+ sb.append(-1);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
+
+class Point {
+ int r, c, cnt, k;
+
+ Point(int r, int c, int cnt, int k) {
+ this.r = r;
+ this.c = c;
+ this.cnt = cnt;
+ this.k = k;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.java" "b/src/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.java"
new file mode 100644
index 0000000..86c1345
--- /dev/null
+++ "b/src/KSY/personal/Practice/S1620_\353\202\230\353\212\224\354\225\274\355\217\254\354\274\223\353\252\254\353\247\210\354\212\244\355\204\260.java"
@@ -0,0 +1,57 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+//83912KB 2460ms
+
+public class S1620_나는야포켓몬마스터 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ Map> dogam = new HashMap<>();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ String[] monsters = new String[N+1];
+
+ for(int i=1; i<=N; i++) {
+ monsters[i] = br.readLine();
+ char upper = Character.toUpperCase(monsters[i].charAt(0));
+ dogam.putIfAbsent(upper, new ArrayList<>());
+ dogam.get(upper).add(new Monster(i, monsters[i]));
+ }
+ for(int i=0; i= 5) {
+ answer += N / 5;
+ N /= 5;
+ }
+ sb.append(answer);
+ }
+
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git "a/src/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.java" "b/src/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.java"
new file mode 100644
index 0000000..6f04c17
--- /dev/null
+++ "b/src/KSY/personal/Practice/S17219_\353\271\204\353\260\200\353\262\210\355\230\270\354\260\276\352\270\260.java"
@@ -0,0 +1,40 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+// 70012KB/ 560ms
+
+public class S17219_비밀번호찾기 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+
+ Map dir = new HashMap<>();
+
+ for(int i=0; i> nodes = new HashMap<>();
+ static boolean[] visited;
+ static int[] parents;
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int V = Integer.parseInt(st.nextToken());
+ int E = Integer.parseInt(st.nextToken());
+
+ visited = new boolean[V+1];
+ parents = new int[V+1];
+ Map edges = new HashMap<>();
+
+ for(int i=1; i<=V; i++) {
+ nodes.put(i, new ArrayList<>());
+ parents[i] = i;
+ }
+
+ PriorityQueue pq = new PriorityQueue<>();
+
+ for(int i=0; i{
+ int a, b, c;
+ Node1(int a, int b, int c){
+ this.a = a; this.b = b; this.c = c;
+ }
+ @Override
+ public int compareTo(Node1 o) {
+ return this.c - o.c;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/personal/Practice/S1956_\354\232\264\353\217\231re.java" "b/src/KSY/personal/Practice/S1956_\354\232\264\353\217\231re.java"
new file mode 100644
index 0000000..a214f1d
--- /dev/null
+++ "b/src/KSY/personal/Practice/S1956_\354\232\264\353\217\231re.java"
@@ -0,0 +1,55 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+public class S1956_운동re {
+
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int V = Integer.parseInt(st.nextToken());
+ int E = Integer.parseInt(st.nextToken());
+
+ int answer = Integer.MAX_VALUE;
+
+ int[][] ms = new int[V+1][V+1];
+ for(int i=1; i<=V; i++) {
+ for(int j=1; j<=V; j++) {
+ ms[i][j] = 10000000;
+ }
+ }
+
+ for(int i=0; i map = new ArrayList<>(); //값, count
+ double sum=0;
+
+ int N = Integer.parseInt(br.readLine());
+ int[] numbers = new int[N];
+ for(int i=0; i answer[] = new ArrayList[N];
+
+ for(int i=0; i();
+
+ for(int i=0; i= maxCnt) {
+ maxCnt = tempCnt;
+ answer[tempCnt].add(numbers[i-1]);
+ }
+ checkNum = numbers[i];
+ tempCnt = 1;
+ }
+ if(N != 1 && i == N-1)
+ answer[tempCnt].add(numbers[i]);
+ }
+
+ for(int i=N-1; i>=0; i--) {
+ if(answer[i].size() == 1) {
+ sb.append(answer[i].get(0)).append("\n");
+ break;
+ } else if(answer[i].size() > 1) {
+ sb.append(answer[i].get(1)).append("\n");
+ break;
+ }
+ }
+
+ }
+
+ //범위
+ sb.append(numbers[N-1] - numbers[0]);
+
+
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+
+ }
+
+}
diff --git "a/src/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.java" "b/src/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.java"
new file mode 100644
index 0000000..788cb6f
--- /dev/null
+++ "b/src/KSY/personal/Practice/S2630_\354\203\211\354\242\205\354\235\264\353\247\214\353\223\244\352\270\260.java"
@@ -0,0 +1,70 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+//13644KB/ 112ms
+
+public class S2630_색종이만들기 {
+
+ static int[][] map ;
+ static int answer[] = new int[] {0, 0}; // white, blue
+ static int[] dr = new int[] {1, 0, 0, 1};
+ static int[] dc = new int[] {1, 0, 1, 0};
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine());
+
+ // map 입력받기
+ map = new int[N][N];
+ for(int i=0; i list = new ArrayList<>();
+
+ for(int i=0; i que = new ArrayDeque<>();
+ que.offer(start);
+ int temp =0;
+ visited[start.r][start.c] = true;
+ while(!que.isEmpty()) {
+ Node curr = que.poll();
+ temp++;
+
+ for(int d=0; d<4; d++) {
+ int row = curr.r + dr[d];
+ int col = curr.c + dc[d];
+ if(-1 < row && row < N && -1 < col && col < N && map[row][col] == 1 && !visited[row][col]) {
+ visited[row][col]= true;
+ que.offer(new Node(row, col));
+ }
+ }
+ }
+ return temp;
+ }
+
+}
+
+class Node{
+ int r, c;
+ Node(int r, int c){
+ this.r = r; this.c = c;
+ }
+}
\ No newline at end of file
diff --git "a/src/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.java" "b/src/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.java"
new file mode 100644
index 0000000..82a7ace
--- /dev/null
+++ "b/src/KSY/personal/Practice/S2805_\353\202\230\353\254\264\354\236\220\353\245\264\352\270\260.java"
@@ -0,0 +1,52 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+//179320KB/ 784ms
+
+public class S2805_나무자르기 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken()); // 나무의 개수
+ long M = Integer.parseInt(st.nextToken()); // 가져야할 나무의 높이
+ st = new StringTokenizer(br.readLine());
+
+ long[] trees = new long[N];
+ long end=0, mid=0, start=0;
+ for(int i=0; i= 0; i--) {
+ if(trees[i] <= mid) {
+ break;
+ }
+ sum += trees[i] - mid;
+ }
+ if(sum >= M) { // 주의
+ start = mid + 1;
+ } else {
+ end = mid;
+ }
+ mid = (end + start)/2;
+ }
+ if(mid-1 < 0)
+ sb.append(0);
+ else
+ sb.append(mid-1);
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git "a/src/KSY/personal/Practice/S7568_\353\215\251\354\271\230.java" "b/src/KSY/personal/Practice/S7568_\353\215\251\354\271\230.java"
new file mode 100644
index 0000000..04c0e17
--- /dev/null
+++ "b/src/KSY/personal/Practice/S7568_\353\215\251\354\271\230.java"
@@ -0,0 +1,50 @@
+package KSY.personal.Practice;
+
+import java.util.*;
+import java.io.*;
+
+//11664KB/ 76ms
+
+public class S7568_덩치 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int N = Integer.parseInt(br.readLine());
+ Person[] people = new Person[N];
+ int[] ranking = new int[N];
+ for(int i=0; i people[j].x && people[i].y > people[j].y)
+ ranking[j]++;
+ else if(people[i].x < people[j].x && people[i].y < people[j].y)
+ ranking[i]++;
+ }
+ }
+
+ for(int i=0; i que = new ArrayDeque();
+
+ que.offer(new Point4(r, c, map[r][c]));
+ map[r][c] = 0; // 방문 처리
+
+ while (!que.isEmpty()) {
+ Point4 cur = que.poll();
+
+ for (int d = 0; d < 4; d++) {
+ int row = cur.r;
+ int col = cur.c;
+ for (int i = 0; i < cur.cnt - 1; i++) { // cnt-1 만큼 주변 벽돌 찾기
+ row += dr[d];
+ col += dc[d];
+ if (-1 < row && row < N && -1 < col && col < N && map[row][col] > 0) {
+ if (map[row][col] > 1) {
+ que.offer(new Point4(row, col, map[row][col]));
+ map[row][col] = 0; // 방문 처리
+ }
+ }
+ }
+
+ }
+
+ }
+ }
+
+ // 벽돌 내리기1 : 빈자리 위쪽 벽돌 찾아 내리기
+ // 벽돌 내리기2 : 매 열마다 맨 윗행부터 벽돌칸 모두 스택에 넣고 빈칸 만들기 (more easy)
+ private static void down(int[][] map) {
+ // 매 열 기준으로 내리기
+ for (int c = 0; c < W; c++) {
+ int r = H - 1, row = -1;
+ while (r > 0) {
+ if (map[r][c] == 0) { // 빈칸이면 내일 벽돌 찾기
+ row = r - 1; // 바로 윗행부터 찾기
+
+ while (row > 0 && map[row][c] == 0)
+ --row;
+
+ map[r][c] = map[row][c];
+ map[row][c] = 0; // 빈칸 처리
+ }
+
+ if (row == 0)
+ break; // row 가 map의 끝까지 탐색했으므로 빠져나감으로 더이상 탐색하지 않는다
+ --r;
+ }
+ }
+
+ }
+
+ // 배열 복사하기
+ private static void copy(int[][] map, int[][] newMap) {
+ for (int r = 0; r < H; r++) {
+ for (int c = 0; c < W; c++) {
+ newMap[r][c] = map[r][c];
+ }
+ }
+ }
+
+ // 남은 벽돌 개수 구하기 :매번 구슬 던지기 전에 사용할 목적
+ private static int getRemain(int[][] map) {
+ int cnt = 0;
+ for (int r = 0; r < H; r++) {
+ for (int c = 0; c < W; c++) {
+ if (map[r][c] != 0)
+ cnt++;
+ }
+ }
+ return cnt;
+ }
+
+ // 디버깅용 : 상태 출력
+
+}
+
+class Point4 {
+ int r, c, cnt;
+
+ Point4(int r, int c, int cnt) {
+ this.r = r;
+ this.c = c;
+ this.cnt = cnt;
+ }
+}
diff --git a/src/KSY/personal/wootaeco/Application.java b/src/KSY/personal/wootaeco/Application.java
new file mode 100644
index 0000000..f4cc3a7
--- /dev/null
+++ b/src/KSY/personal/wootaeco/Application.java
@@ -0,0 +1,5 @@
+package KSY.personal.wootaeco;
+
+public class Application {
+
+}
diff --git a/src/KSY/personal/wootaeco/Snippet.java b/src/KSY/personal/wootaeco/Snippet.java
new file mode 100644
index 0000000..48ca882
--- /dev/null
+++ b/src/KSY/personal/wootaeco/Snippet.java
@@ -0,0 +1,8 @@
+package KSY.personal.wootaeco;
+
+public class Snippet {
+ public static void main(String[] args) {
+ missionutils
+ }
+}
+
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.java"
new file mode 100644
index 0000000..3497f4e
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/SoonJonBu.java"
@@ -0,0 +1,89 @@
+package KSY.personal.시험대비;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Scanner;
+
+public class SoonJonBu {
+ static int N;
+ static int R;
+ static int[] input, result;
+
+ public static void main(String[] args) throws IOException {
+ Scanner sc = new Scanner(System.in);
+ int N = sc.nextInt();
+ int R = sc.nextInt();
+
+ }
+
+ public static void Permutation(int cnt, int flag) {
+ if(cnt == R) {
+ System.out.println(Arrays.toString(result));
+ return;
+ }
+
+ for(int i=0; iN-R) p[i--] = 1; // i-- 주의
+ do {
+ for(int j=0; j 0 && p[i-1] >= p[i]) i--;
+ if(i == 0) return false;
+
+ int j = N-1;
+ while(p[i-1] >= p[j]) j--;
+ swap(p, i-1, j);
+
+ int k= N-1;
+ while(k > i)
+ swap(p, k--, i++);
+ return true;
+ }
+
+ public static void swap(int[] p, int i, int j) {
+ int temp = p[i];
+ p[i] = p[j];
+ p[j] = temp;
+ }
+
+}
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt"
new file mode 100644
index 0000000..387bd1b
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/testcase.txt"
@@ -0,0 +1,61 @@
+30
+2
+5 5
+2
+4 2
+2
+3 4
+4
+2 3 10 5
+4
+1 2 3 4
+20
+26 19 23 2 24 2 17 15 1 27 6 29 18 23 27 13 26 21 9 1
+20
+4 5 3 4 2 4 4 3 5 2 2 3 5 5 5 2 5 2 5 5
+20
+1 3 6 5 5 1 5 4 3 5 4 2 4 6 5 5 4 5 5 3
+20
+4 5 6 6 5 3 1 3 3 3 3 5 3 3 3 4 5 1 4 3
+20
+26 6 8 15 10 15 14 6 19 16 5 13 9 12 14 29 28 3 12 27
+30
+8 27 2 32 19 16 19 11 33 35 7 9 6 12 7 1 1 28 38 32 25 14 5 15 34 30 14 24 7 24
+30
+3 2 5 5 5 4 4 5 2 4 3 4 3 5 5 2 5 4 2 5 2 1 5 4 4 3 2 4 2 4
+30
+6 4 6 5 6 1 1 6 4 5 6 6 5 1 3 6 5 5 5 4 6 1 1 5 3 3 6 1 5 5
+30
+1 6 3 5 6 1 4 5 4 5 5 5 6 5 2 3 6 2 3 5 5 1 5 4 6 5 6 4 6 6
+30
+35 8 19 40 12 17 11 29 14 21 31 39 28 33 16 19 34 12 12 10 28 40 6 19 36 19 10 2 34 22
+50
+37 59 11 13 18 30 22 53 35 18 27 7 50 19 57 38 54 24 31 38 4 8 9 54 37 29 32 27 11 7 19 57 36 54 35 31 45 2 10 54 27 14 51 27 34 51 1 58 4 6
+50
+2 2 5 2 3 2 3 1 3 5 5 3 2 2 2 3 4 4 4 2 1 5 4 4 4 2 3 4 2 5 4 3 5 3 5 2 2 4 4 4 5 5 3 4 2 3 4 4 5 4
+50
+6 6 5 4 6 6 1 4 2 1 4 6 2 3 5 6 5 5 1 5 5 4 5 3 1 6 3 6 5 3 5 1 3 5 3 6 3 5 5 2 4 3 6 3 5 5 3 5 5 6
+50
+5 5 5 1 4 5 3 2 4 5 5 5 6 3 2 5 5 6 3 5 3 5 4 6 5 5 3 3 6 5 6 1 3 4 4 6 1 6 3 3 6 3 2 6 6 1 5 4 5 4
+50
+11 17 35 37 41 2 8 20 40 5 25 58 54 7 36 33 46 44 37 53 15 8 42 56 35 2 40 55 50 58 49 2 35 19 32 54 18 12 22 56 23 17 47 4 30 56 48 4 36 33
+70
+37 26 72 57 38 33 9 6 66 71 59 55 21 58 65 57 27 36 14 27 7 76 34 34 8 55 23 80 41 35 39 38 8 5 17 23 42 1 27 78 77 26 74 51 13 27 32 11 75 37 37 62 75 73 41 28 29 57 56 18 79 27 48 9 1 30 31 65 73 63
+70
+3 4 4 3 4 5 4 1 5 4 4 5 5 5 4 4 2 3 3 4 4 2 3 2 5 1 2 5 4 4 4 5 2 2 4 2 3 2 3 5 4 5 4 4 1 2 3 4 4 4 5 3 5 5 4 5 4 3 5 5 2 4 1 4 2 4 5 3 5 3
+70
+6 5 1 3 3 5 5 5 3 5 3 4 2 6 5 5 1 2 1 3 5 4 6 1 1 5 5 5 5 5 6 6 5 1 1 5 3 5 4 5 3 5 2 4 3 1 2 5 6 3 6 3 4 4 5 3 5 5 3 3 6 5 2 1 3 5 6 5 4 5
+70
+5 5 4 6 6 3 4 1 1 1 3 6 6 1 5 5 1 5 3 5 6 3 5 3 4 6 1 5 2 6 3 5 6 5 3 5 1 3 4 4 6 5 2 1 6 5 4 5 5 4 5 6 3 5 2 4 3 3 3 3 3 6 3 5 5 3 5 4 5 5
+70
+47 25 56 22 41 75 1 47 39 28 48 52 43 50 56 2 50 41 35 6 36 23 60 67 73 3 30 52 31 8 60 34 10 55 35 24 28 75 45 5 37 49 24 1 59 7 6 20 77 4 5 67 5 25 18 61 29 54 41 69 68 16 33 48 65 18 22 34 70 2
+100
+30 108 8 61 17 56 54 29 50 72 9 97 67 36 75 110 88 99 75 93 19 44 39 45 72 53 115 106 1 20 25 118 117 51 89 72 116 33 76 26 6 47 35 55 45 89 78 69 56 78 58 95 34 9 1 14 2 9 8 64 12 85 117 49 40 44 8 2 89 36 12 56 89 18 38 63 3 57 29 110 25 46 98 20 119 52 114 107 23 11 105 35 119 55 82 115 56 85 68 28
+100
+2 4 4 3 1 3 4 5 5 2 3 2 4 4 4 4 4 2 4 1 5 3 5 3 2 3 4 4 2 2 3 5 2 4 2 4 3 4 4 2 4 5 4 5 4 4 4 5 5 3 3 4 4 1 2 1 5 2 4 4 4 1 2 4 1 2 1 4 5 2 4 5 5 2 4 5 1 4 3 5 4 5 2 3 2 5 4 4 5 3 2 4 4 2 2 5 5 1 2 2
+100
+4 5 2 6 6 1 5 2 1 1 3 5 3 3 5 6 5 6 3 5 5 5 1 1 6 3 5 5 6 5 4 4 6 6 1 5 1 5 1 4 5 5 2 5 5 5 5 3 6 3 2 5 5 6 6 3 5 3 1 2 5 1 4 6 4 6 1 3 4 3 6 1 1 5 2 3 1 5 3 5 6 5 5 5 5 3 5 6 2 6 5 4 3 5 5 3 5 6 5 6
+100
+3 6 5 1 6 5 6 1 6 5 5 6 6 5 5 6 3 5 3 5 6 6 3 5 5 6 3 3 3 2 4 6 4 4 5 4 5 6 6 5 1 5 2 3 3 3 5 3 6 5 4 3 6 5 6 6 5 5 5 2 3 5 1 6 1 6 3 3 6 5 2 6 3 2 3 3 5 1 6 5 5 6 1 3 4 3 3 5 2 1 1 6 1 5 6 4 6 5 4 5
+100
+68 88 9 43 34 56 114 65 16 83 42 2 120 94 45 100 44 110 47 34 16 112 24 108 22 78 88 120 65 69 108 81 36 53 82 15 67 56 82 95 74 95 14 77 29 97 68 103 32 109 88 115 80 107 15 116 81 78 82 17 98 100 47 103 30 41 55 72 100 24 11 19 105 12 64 102 100 22 21 106 50 8 66 14 20 58 43 14 78 82 21 5 1 81 89 65 35 20 87 47
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.java"
new file mode 100644
index 0000000..e89e9c5
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204.java"
@@ -0,0 +1,179 @@
+package KSY.personal.시험대비;
+
+import java.io.*;
+import java.util.Arrays;
+
+//순조부
+
+public class 월_230814_시험대비 {
+ static int totalCnt, N, R, T;
+ static String[] input, result;
+ static StringBuilder sb;
+
+ public static void main(String[] args) throws Exception {
+
+ System.setIn(new FileInputStream("input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(System.out));
+
+ input = br.readLine().split(" "); // 학생들
+ T = Integer.parseInt(br.readLine().trim());
+
+ for (int i = 0; i < T; i++) {
+ String line[] = br.readLine().split(" ");
+
+ N = Integer.parseInt(line[1]);// N은 19반 인원
+ R = Integer.parseInt(line[2]);// R은 뽑을 수
+ result = new String[R];// 뽑힌 학생들
+ sb = new StringBuilder();
+
+ long startTime = System.nanoTime();
+ totalCnt = 0;
+
+ switch (line[0]) {
+
+ case "M1":
+ M1_노래부를순서정하기_순열(0, 0);
+ break;
+ case "M2":
+ M2_노래부를순서정하기_순열_NP();
+ break;
+ case "M3":
+ M3_노래부를팀만들기_조합(0, 0);
+ break;
+ case "M4":
+ M4_노래부를팀만들기_조합_NP();
+ break;
+ case "M5":
+ M5_노래부를팀만들기_부분집합();
+ break;
+
+ }
+ after(startTime);
+ wr.write(sb.toString());
+ wr.flush();
+ }
+
+ }
+
+ private static void after(long startTime) {
+ sb.append(totalCnt).append("\n");
+ long endTime = System.nanoTime();
+ sb.append(((endTime - startTime) * 0.000000001)).append("초\n");
+ }
+
+ ////////////////
+ private static void M1_노래부를순서정하기_순열(int cnt, int flag) {
+ ++totalCnt;
+ if (cnt == R) {
+ //sb.append(Arrays.toString(result)).append("\n");
+ return;
+ }
+
+ for (int i = 0; i < N; i++) {
+ if ((flag & 1 << i) != 0)
+ continue;
+ result[cnt] = input[i];
+ M1_노래부를순서정하기_순열(cnt + 1, flag | 1 << i);
+ }
+ }
+
+ //////////////////////
+ private static void M2_노래부를순서정하기_순열_NP() {
+ int[] p = new int[N];
+ for (int i = 0; i < N; i++) {
+ p[i] = i;
+ }
+ do {
+ ++totalCnt;
+ for (int i = 0; i < N; i++) {
+ //sb.append(input[p[i]]).append(" ");
+ }
+ //sb.append("\n");
+
+ } while (NP(p));
+
+ }
+
+
+ ///////////////////////
+ private static void M3_노래부를팀만들기_조합(int cnt, int start) {
+ ++totalCnt;
+ if (cnt == R) {
+// sb.append(Arrays.toString(result)).append("\n");
+ return;
+ }
+
+ for (int i = start; i < N; i++) {
+ result[cnt] = input[i];
+ M3_노래부를팀만들기_조합(cnt + 1, i + 1);
+ }
+
+ }
+
+ /////////////////////
+ private static void M4_노래부를팀만들기_조합_NP() {
+
+ // 배열 뒤부터 R개수만큼 1로 만듦 : 5C2라면 00011 이런형태로
+ int cnt = 0;
+ int[] p = new int[N];
+ while (++cnt <= R) {
+ p[N - cnt] = 1;
+ }
+
+ do {
+ ++totalCnt;
+ for (int i = 0; i < N; i++) {
+ if(p[i]==1) {
+ //sb.append(input[i]).append(" ");
+ }
+ }
+ //sb.append("\n");
+
+ } while (NP(p));
+
+ }
+
+
+ /////////////////////
+ private static void M5_노래부를팀만들기_부분집합() {
+ for (int i = 0; i < (1< 0 && p[i - 1] >= p[i])
+ --i;
+
+ if (i == 0)
+ return false;
+
+ int j = N - 1;
+ while (p[i - 1] >= p[j])
+ --j;
+ swap(p, i - 1, j);
+
+ int k = N - 1;
+ while (i < k)
+ swap(p, i++, k--);
+
+ return true;
+
+ }
+
+ private static void swap(int[] p, int a, int b) {
+ int temp = p[a];
+ p[a] = p[b];
+ p[b] = temp;
+ }
+
+}
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.java"
new file mode 100644
index 0000000..ce85e31
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230814_\354\213\234\355\227\230\353\214\200\353\271\204_practice1.java"
@@ -0,0 +1,173 @@
+package KSY.personal.시험대비;
+
+import java.io.*;
+import java.util.Arrays;
+
+//순조부
+
+public class 월_230814_시험대비_practice1 {
+ static int totalCnt, N, R, T;
+ static String[] input, result;
+ static StringBuilder sb;
+
+ public static void main(String[] args) throws Exception {
+
+ System.setIn(new FileInputStream("input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(System.out));
+
+
+ input = br.readLine().split(" "); // 학생들
+ T = Integer.parseInt(br.readLine().trim());
+
+ for (int i = 0; i < T; i++) {
+ String line[] = br.readLine().split(" ");
+
+ N = Integer.parseInt(line[1]);// N은 19반 인원
+ R = Integer.parseInt(line[2]);// R은 뽑을 수
+ result = new String[R];// 뽑힌 학생들
+ sb = new StringBuilder();
+
+ long startTime = System.nanoTime();
+ totalCnt = 0;
+
+ switch (line[0]) {
+
+ case "M1":
+ M1_노래부를순서정하기_순열(0, 0);
+ break;
+ case "M2":
+ M2_노래부를순서정하기_순열_NP();
+ break;
+ case "M3":
+ M3_노래부를팀만들기_조합(0, 0);
+ break;
+ case "M4":
+ M4_노래부를팀만들기_조합_NP();
+ break;
+ case "M5":
+ M5_노래부를팀만들기_부분집합();
+ break;
+
+ }
+ after(startTime);
+ wr.write(sb.toString());
+ wr.flush();
+ }
+
+
+
+ }
+
+ private static void after(long startTime) {
+ sb.append(totalCnt).append("\n");
+ long endTime = System.nanoTime();
+ sb.append(((endTime - startTime) * 0.000000001)).append("초\n");
+ }
+
+ ////////////////
+ private static void M1_노래부를순서정하기_순열(int cnt, int flag) {
+ ++totalCnt;
+ if(cnt == R) {
+// sb.append(Arrays.toString(result)).append("\n");
+
+ } else {
+ for(int i=0; i=N-R) p[i--] = 1;
+
+ do {
+ totalCnt++;
+ for(int j=0; j 0 && p[i-1] >= p[i]) i--;
+ if(i == 0) return false;
+
+ int j= N-1;
+ while(p[i-1] >= p[j]) j--;
+ swap(p, i-1, j);
+
+ int k=N-1;
+ while(k>i)
+ swap(p, k--, i++);
+
+ return true;
+ }
+
+ private static void swap(int[] p, int a, int b) {
+ int temp = p[a];
+ p[a] = p[b];
+ p[b] = temp;
+ }
+
+}
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.java"
new file mode 100644
index 0000000..ddade6a
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_A\355\230\225_\354\213\234\355\227\230\353\214\200\353\271\204.java"
@@ -0,0 +1,101 @@
+package KSY.personal.시험대비;
+
+import java.util.*;
+import java.io.*;
+
+public class 월_230828_A형_시험대비 {
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/personal/시험대비/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for (int test = 1; test <= T; test++) {
+
+ int answer=0;
+ int N = Integer.parseInt(br.readLine());
+
+ // 나무 입력 받기
+ int trees[] = new int[N];
+ int max = 0;
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ for(int i=0; i max)
+ max = trees[i];
+ }
+
+ int odd=0, even=0;
+ for(int i=0; i odd) {
+ while(Math.abs(even - odd) > 1) {
+ even -= 1;
+ odd += 2;
+ }
+ }
+
+ if(odd > even)
+ answer = odd*2 - 1;
+ else if(odd < even)
+ answer = even*2;
+ else
+ answer = odd + even;
+
+ sb.append("#").append(test).append(" ").append(answer).append("\n");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+
+}
+
+
+
+// int cnt = 0;
+//
+// int N = Integer.parseInt(br.readLine());
+// // 나무 입력 받기
+// List trees = new ArrayList<>();
+// StringTokenizer st = new StringTokenizer(br.readLine());
+// for (int i = 0; i < N; i++) {
+// int tree = Integer.parseInt(st.nextToken());
+// trees.add(tree);
+// }
+//
+// Collections.sort(trees);
+// int max = trees.get(trees.size() - 1);
+// for(int i=trees.size()-1; i>=0; i--) {
+// if(trees.get(i) == max)
+// trees.remove(i);
+// }
+//
+// int plus = 1;
+// while (!trees.isEmpty()) {
+// Collections.sort(trees);
+// // 더할 값 정하기
+// if (++cnt % 2 == 0)
+// plus = 2;
+// else
+// plus = 1;
+// for (int i = trees.size() - 1; i >= 0; i--) { // 뒤부터 탐색
+// if (trees.get(i) + plus == max) {
+// trees.remove(i);
+// break;
+// }
+// if (trees.get(i) + plus < max) {
+// trees.set(i, trees.get(i) + plus);
+// break;
+// }
+// }
+// }
\ No newline at end of file
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.java"
new file mode 100644
index 0000000..8974154
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\233\224_230828_\353\202\230\353\254\264\354\235\230\355\202\244RE.java"
@@ -0,0 +1,59 @@
+package KSY.personal.시험대비;
+
+import java.io.*;
+import java.util.*;
+
+public class 월_230828_나무의키RE {
+
+ public static void main(String[] args) throws IOException {
+ System.setIn(new FileInputStream("src/KSY/personal/시험대비/testcase.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+ for(int test=1; test<=T; test++) {
+ int answer = 0;
+ int max = 0;
+ int N = Integer.parseInt(br.readLine());
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int[] trees = new int[N];
+ for(int i=0; i odd && Math.abs(even - odd) > 1) {
+ even -= 1;
+ odd += 2;
+ }
+
+ if(odd > even) {
+ answer = odd*2 - 1;
+ } else if(even > odd) {
+ answer = even*2;
+ } else {
+ answer = odd + even;
+ }
+
+
+ sb.append("#").append(test).append(" ").append(answer).append("\n");
+ }
+ bw.write(sb.toString());
+ bw.flush();
+ bw.close();
+ }
+
+}
diff --git "a/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.java" "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.java"
new file mode 100644
index 0000000..7d816ca
--- /dev/null
+++ "b/src/KSY/personal/\354\213\234\355\227\230\353\214\200\353\271\204/\354\235\274\355\203\200\354\213\270\355\224\274.java"
@@ -0,0 +1,10 @@
+package KSY.personal.시험대비;
+
+public class 일타싸피 {
+
+ public static void main(String[] args) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/src/KSY/testcase.txt b/src/KSY/testcase.txt
new file mode 100644
index 0000000..8f86c79
--- /dev/null
+++ b/src/KSY/testcase.txt
@@ -0,0 +1,5 @@
+4 4
+0111
+1111
+1111
+1110
\ No newline at end of file
diff --git "a/src/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.java" "b/src/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.java"
new file mode 100644
index 0000000..081551a
--- /dev/null
+++ "b/src/KSY/\354\227\254\355\226\211\352\262\275\353\241\234.java"
@@ -0,0 +1,66 @@
+package KSY;
+
+import java.util.*;
+class 여행경로 {
+ static Map> graph = new HashMap<>();
+ static Map visited = new HashMap<>();
+ static String[] answer;
+ static boolean flag=false;
+
+ public static String[] solution(String[][] tickets) {
+ answer = new String[tickets.length+1];
+
+ for(int i=0; i new ArrayList<>()).add(tickets[i][1]);
+ // 티켓 개수 구하기
+ String tempKey = tickets[i][0] + tickets[i][1];
+ if(visited.containsKey(tempKey))
+ visited.put(tempKey, visited.get(tempKey)+1);
+ else
+ visited.put(tempKey, 1);
+
+ if(graph.containsKey(tickets[i][0])){
+ graph.get(tickets[i][0]).add(tickets[i][1]);
+ } else{
+ List list = new ArrayList<>();
+ list.add(tickets[i][1]);
+ graph.put(tickets[i][0], list);
+ }
+ }
+ // Todo : map 출력 방법, computeIfAbsente
+
+ for(Map.Entry> entry: graph.entrySet()) {
+ Collections.sort(graph.get(entry.getKey())); //정렬
+ System.out.println(entry.getKey() +" "+ entry.getValue());
+ }
+
+ DFS("ICN", 0);
+ return answer;
+ }
+
+ public static void DFS(String vertex, int cnt){
+ if(cnt == answer.length-1){
+ System.out.println("--"+Arrays.toString(answer));
+ flag = true;
+ return;
+ }
+ answer[cnt] = vertex;
+
+ if(graph.containsKey(vertex)) {
+ for(String v: graph.get(vertex)) {
+ if(visited.get(vertex+v) > 0) { //아직 방문하지 않은
+ visited.put(vertex+v, visited.get(vertex+v)-1); // 방문 표시
+ answer[cnt+1] = v;
+ DFS(v, cnt+1);
+ if(!flag) // 정답이 만들어지지 못 했다면 backtracking
+ visited.put(vertex+v, visited.get(vertex+v)+1); // 미방문 표시
+ }
+ }
+ }
+ }
+ public static void main(String[] args) {
+// System.out.println(Arrays.toString(solution(new String[][]{{"ICN", "JFK"}, {"HND", "IAD"}, {"JFK", "HND"}})));
+ System.out.println(Arrays.toString(solution(new String[][] {{"ICN", "SFO"}, {"ICN", "ATL"}, {"SFO", "ATL"}, {"ATL", "ICN"}, {"ATL","SFO"}})));
+
+ }
+}
diff --git a/src/S14940.java b/src/S14940.java
new file mode 100644
index 0000000..ddc9188
--- /dev/null
+++ b/src/S14940.java
@@ -0,0 +1,66 @@
+
+import java.util.*;
+import java.io.*;
+
+public class S14940 {
+ static int[] dr = new int[]{1, 0, -1, 0};
+ static int[] dc = new int[]{0, 1, 0, -1};
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int N = Integer.parseInt(st.nextToken());
+ int M = Integer.parseInt(st.nextToken());
+ int[][] map = new int[N][M];
+ int[][] answer = new int[N][M];
+
+ int r=0, c=0;
+ //입력받기
+ for(int i=0; i que = new ArrayDeque<>();
+ que.offer(new int[] {r, c, 0});
+
+ while(!que.isEmpty()) {
+ int[] curr = que.poll();
+ for(int d=0; d<4; d++) {
+ int row = curr[0] + dr[d];
+ int col = curr[1] + dc[d];
+ if(-1 < row && row < N && -1 < col && col < M && answer[row][col] == -1) {
+ if(map[row][col] == 1) {
+ que.offer(new int[] {row, col, curr[2]+1});
+ answer[row][col] = curr[2]+1;
+ }
+ }
+ }
+ }
+
+ for(int i=0; i que = new ArrayDeque<>();
+
+ for(int i=0; i{
+ int vol, val;
+ public Thing(int vol, int val) {
+ this.vol = vol;
+ this.val = val;
+ }
+
+ @Override
+ public int compareTo(Thing o) {
+ return Integer.compare(this.vol, o.vol);
+ }
+
+ @Override
+ public String toString() {
+ return vol + " " + val;
+ }
+ }
+
+
+ public static void main(String[] args) throws Exception {
+// System.setIn(new FileInputStream("input.txt"));
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // 빠른 읽기
+ BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
+ StringBuilder sb = new StringBuilder();
+ StringTokenizer st = null;
+
+ int t = Integer.parseInt(br.readLine());
+
+ for(int tc=1; tc<=t; tc++) {
+ st = new StringTokenizer(br.readLine());
+ int n = Integer.parseInt(st.nextToken());
+ int k = Integer.parseInt(st.nextToken());
+
+ int[][] dp = new int[n][k+1];
+ List things = new ArrayList<>();
+
+ for(int i=0; i= things.get(0).vol) dp[0][i] = things.get(0).val;
+ }
+
+ for (int i=1; i= things.get(i).vol) {
+ dp[i][j] = Math.max(things.get(i).val + dp[i - 1][j - things.get(i).vol], dp[i - 1][j]);
+ } else {
+ dp[i][j] = dp[i - 1][j];
+ }
+ }
+ }
+
+ sb.append("#").append(tc).append(" ").append(dp[n-1][k]).append("\n");
+
+ }
+
+ bw.write(sb.toString());
+ bw.flush();
+ }
+
+}
+
diff --git a/testcase.txt b/testcase.txt
new file mode 100644
index 0000000..bf6f175
--- /dev/null
+++ b/testcase.txt
@@ -0,0 +1,16 @@
+3
+3 7
+.......
+.M-.-Z.
+.......
+3 5
+..1-M
+1-+..
+Z.23.
+6 10
+Z.1----4..
+|.|....|..
+|..14..M..
+2-+++4....
+..2323....
+..........
\ No newline at end of file
diff --git "a/\352\263\265\352\260\204\353\247\214\353\223\244\352\270\260_input.txt" "b/\352\263\265\352\260\204\353\247\214\353\223\244\352\270\260_input.txt"
new file mode 100644
index 0000000..00c789d
--- /dev/null
+++ "b/\352\263\265\352\260\204\353\247\214\353\223\244\352\270\260_input.txt"
@@ -0,0 +1,14 @@
+8
+1 1 0 0 0 0 1 1
+1 1 0 0 0 0 1 1
+0 0 0 0 1 1 0 0
+0 0 0 0 1 1 0 0
+1 0 0 0 1 1 1 1
+0 1 0 0 1 1 1 1
+0 0 1 1 1 1 1 1
+0 0 1 1 1 1 1 1
+
+
+==>
+9
+7
\ No newline at end of file
| | |