stack = new ArrayDeque<>();
+
+ for (char bracket : queue) {
+
+ if (bracket == '[' || bracket == '(' || bracket == '{') {
+ stack.push(bracket);
+ continue;
+ }
+
+ if (stack.isEmpty()) {
+ return false;
+ }
+
+ Character next = stack.peek();
+
+ if (bracket == ']' && next != '[') {
+ return false;
+ }
+ if (bracket == ')' && next != '(') {
+ return false;
+ }
+ if (bracket == '}' && next != '{') {
+ return false;
+ }
+
+ stack.pop();
+ }
+
+ return stack.isEmpty();
+ }
+}
diff --git "a/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/Vryez11/Solution.java" "b/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/Vryez11/Solution.java"
new file mode 100644
index 0000000..87928cb
--- /dev/null
+++ "b/src/week2/\352\270\260\354\247\200\352\265\255\354\204\244\354\271\230/Vryez11/Solution.java"
@@ -0,0 +1,37 @@
+package week2.기지국설치.Vryez11;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Solution {
+
+ /**
+ *
+ * [프로그래머스] 기지국 설치
+ *
+ * 문제 난이도: Lv.3
+ * 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12979
+ * 풀이 시간: 30분
+ * 풀이 근거: 처음에는 boolean[]로 풀이로 시간 초과 -> 문제 다시 보니, n의 값이 2억 이하 -> 이건 수학적으로 접근해야 된다. -> seq 연속된 것만 구해서 나눗셈 더하면 되겠네
+ */
+
+ public int solution(int n, int[] stations, int w) {
+
+ int pre = 1, ans = 0;
+ int range = (2 * w + 1);
+
+ for (int station : stations) {
+
+ int seq = station - w - pre;
+ ans += getCount(seq, range);
+ pre = station + w + 1;
+ }
+
+ return ans + getCount(n - pre + 1, range);
+ }
+
+ private int getCount(int seq, int range) {
+ if (seq <= 0) return 0;
+ return (seq + range - 1) / range;
+ }
+}
diff --git "a/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/Vreyz11/Solution.java" "b/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/Vreyz11/Solution.java"
new file mode 100644
index 0000000..856d282
--- /dev/null
+++ "b/src/week2/\353\251\200\353\246\254\353\233\260\352\270\260/Vreyz11/Solution.java"
@@ -0,0 +1,33 @@
+package week2.멀리뛰기.Vreyz11;
+
+public class Solution {
+
+ /**
+ *
+ * [프로그래머스] 멀리 뛰기
+ *
+ * 문제 난이도 : Lv. 2
+ * 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12914
+ * 풀이 시간 : 10분
+ * 풀이 근거 : n-1에서 1로 뛰면 n / n-2에서 2로 뛰면 n / 따라서 n - 1, n - 2합 축적
+ */
+
+ static final int MOD = 1_234_567;
+
+ public long solution(int n) {
+
+ long[] dp = new long[n + 1];
+
+ if (n == 1) return 1;
+
+ dp[1] = 1;
+ dp[2] = 2;
+
+ for (int i = 3; i <= n; i++) {
+
+ dp[i] = (dp[i - 2] + dp[i - 1]) % MOD;
+ }
+
+ return dp[n];
+ }
+}
diff --git "a/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/Vryez11/Solution.java" "b/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/Vryez11/Solution.java"
new file mode 100644
index 0000000..d947800
--- /dev/null
+++ "b/src/week2/\354\204\254\354\227\260\352\262\260\355\225\230\352\270\260/Vryez11/Solution.java"
@@ -0,0 +1,73 @@
+package week2.섬연결하기.Vryez11;
+
+import java.util.Arrays;
+
+public class Solution {
+
+ /**
+ *
+ * [프로그래머스] 섬 연결하기
+ *
+ * 문제 난이도 : Lv. 3
+ * 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42861
+ * 풀이 시간 : 20분
+ * 풀이 근거 : costs 배열을 cost로 정렬 / union-find로 연결된 섬 O(1)로 확인
+ */
+
+ int[] parent;
+
+ public int solution(int n, int[][] costs) {
+
+ Arrays.sort(costs, (o1, o2) -> {
+ return Integer.compare(o1[2], o2[2]);
+ });
+
+ int ans = 0;
+ int line = 0;
+
+ parent = new int[n];
+ for (int i = 0; i < parent.length; i++) {
+ parent[i] = i;
+ }
+
+ for (int[] cost : costs) {
+
+ if (line == n - 1) break;
+
+ int start = cost[0];
+ int end = cost[1];
+
+ if (find(start) == find(end)) continue;
+
+ union(start, end);
+
+ ans += cost[2];
+ line++;
+ }
+
+ return ans;
+ }
+
+ private int find(int node) {
+
+ if (parent[node] == node) return node;
+
+ return parent[node] = find(parent[node]);
+ }
+
+ private void union(int start, int end) {
+
+ int startParent = find(start);
+ int endParent = find(end);
+
+ if (startParent == endParent) return;
+
+ if (startParent < endParent) {
+ parent[startParent] = endParent;
+ }
+
+ if (startParent > endParent) {
+ parent[endParent] = startParent;
+ }
+ }
+}
diff --git "a/src/week2/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260/Vryez11/Solution.java" "b/src/week2/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260/Vryez11/Solution.java"
new file mode 100644
index 0000000..a38b828
--- /dev/null
+++ "b/src/week2/\354\247\225\352\262\200\353\213\244\353\246\254\352\261\264\353\204\210\352\270\260/Vryez11/Solution.java"
@@ -0,0 +1,53 @@
+package week2.징검다리건너기.Vryez11;
+
+public class Solution {
+
+ /**
+ *
+ * [프로그래머스] 징검다리 건너기
+ *
+ * 문제 난이도: Lv. 3
+ * 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64062
+ * 풀이 시간: 20분
+ * 풀이 근거:
+ */
+
+ public int solution(int[] stones, int k) {
+
+ int left = 1;
+ int right = 200_000_000;
+ int answer = 0;
+
+ while (left <= right) {
+ int mid = left + (right - left) / 2;
+
+ if (canCross(stones, k, mid)) {
+ answer = mid;
+ left = mid + 1;
+ } else {
+ right = mid - 1;
+ }
+ }
+
+ return answer;
+ }
+
+ private boolean canCross(int[] stones, int k, int people) {
+ int count = 0;
+
+ for (int stone : stones) {
+ if (stone < people) {
+ count++;
+
+ if (count >= k) {
+ return false;
+ }
+
+ } else {
+ count = 0;
+ }
+ }
+
+ return true;
+ }
+}
diff --git "a/src/week2/\355\212\234\355\224\214/Vryez11/Solution.java" "b/src/week2/\355\212\234\355\224\214/Vryez11/Solution.java"
new file mode 100644
index 0000000..f2fd84e
--- /dev/null
+++ "b/src/week2/\355\212\234\355\224\214/Vryez11/Solution.java"
@@ -0,0 +1,46 @@
+package week2.튜플.Vryez11;
+
+import java.util.*;
+
+public class Solution {
+
+ /**
+ *
+ * [프로그래머스] 튜플
+ *
+ * 문제 난이도: Lv. 2
+ * 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64065
+ * 풀이 시간: 10분
+ * 풀이 근거: 배열의 크기 정렬
+ */
+
+ public int[] solution(String s) {
+
+ s = s.substring(2, s.length() - 2);
+
+ String[] arr = s.split("\\},\\{");
+
+ Arrays.sort(arr, (a, b) -> Integer.compare(a.length(), b.length()));
+
+ List answer = new ArrayList<>();
+ Set set = new HashSet<>();
+
+ for (String str : arr) {
+ String[] nums = str.split(",");
+
+ for (String num : nums) {
+
+ int value = Integer.parseInt(num);
+
+ if(!set.contains(value)) {
+ set.add(value);
+ answer.add(value);
+ }
+ }
+ }
+
+ return answer.stream()
+ .mapToInt(i -> i)
+ .toArray();
+ }
+}