diff --git a/README.md b/README.md
index 87149da..1fe4473 100644
--- a/README.md
+++ b/README.md
@@ -16,9 +16,10 @@
- 브랜치는 [주제명_이름]으로 제작합니다
- ex)BruteForce_yena
-| 날짜 | 주제 | 문제 목록 |
-| :---: | :------: | :---------------------------------------------------------: |
-| 03.19 | 완전탐색 | 자리수의 합 , 뒤집은 소수 , 멘토링 , 졸업선물 , K번째 큰 수 |
+| 날짜 | 주제 | 문제 목록 | 풀이/예나|
+| :---: | :------: | :---------------------------------------------------------: |:--:|
+| 03.19 | 완전탐색 | 자리수의 합 , 뒤집은 소수 , 멘토링 , 졸업선물 , K번째 큰 수 | [풀이](https://github.com/Beauty-Saurus/javascript-algorithm/pull/33) |
+| 03.26 | 효율성 | 공통원소 구하기, 두 배열 합치기, 연속 부분수열1/2, 최대매출, 학급회장, 아나그램 | [풀이](https://github.com/Beauty-Saurus/javascript-algorithm/pull/34) |
diff --git "a/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js" "b/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js"
new file mode 100644
index 0000000..45ada44
--- /dev/null
+++ "b/jiwon/level1/\352\260\200\354\236\245\352\260\200\352\271\214\354\232\264\352\260\231\354\235\200\352\270\200\354\236\220.js"
@@ -0,0 +1,9 @@
+function solution(s) {
+ var answer = [];
+ s.split("").map((elem, index) => {
+ const i = s.slice(0, index).lastIndexOf(elem);
+ if (i === -1) answer.push(i);
+ else answer.push(index - i);
+ });
+ return answer;
+}
diff --git "a/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js" "b/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js"
new file mode 100644
index 0000000..c713150
--- /dev/null
+++ "b/jiwon/level1/\352\260\234\354\235\270\354\240\225\353\263\264\354\210\230\354\247\221\354\234\240\355\232\250\352\270\260\352\260\204.js"
@@ -0,0 +1,27 @@
+const getDateCount = (date) => {
+ let sum = 0;
+ const [year, month, day] = date.split(".").map((elem) => parseInt(elem));
+ sum += year * 12 * 28;
+ sum += month * 28;
+ sum += day;
+ return sum;
+};
+
+function solution(today, terms, privacies) {
+ var answer = [];
+ const todayCount = getDateCount(today);
+ const newTerms = terms.map((elem) => {
+ const [term, month] = elem.split(" ");
+ return { term, month, day: month * 28 - 1 };
+ });
+ let index = 0;
+ privacies.map((privacy) => {
+ index += 1;
+ const [date, term] = privacy.split(" ");
+ let [year, month, day] = date.split(".").map((elem) => parseInt(elem));
+ day = day + newTerms.find((elem) => elem.term === term).day;
+ const limitDateCount = getDateCount([year, month, day].join("."));
+ if (todayCount > limitDateCount) answer.push(index);
+ });
+ return answer;
+}
diff --git "a/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js" "b/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js"
new file mode 100644
index 0000000..d73290c
--- /dev/null
+++ "b/jiwon/level1/\353\241\234\353\230\220\354\265\234\352\263\240\354\210\234\354\234\204\354\231\200\354\265\234\354\240\200\354\210\234\354\234\204.js"
@@ -0,0 +1,12 @@
+function solution(lottos, win_nums) {
+ var answer = [];
+ let hit = 0
+ let not = 0
+ lottos.map ((elem) => {
+ if (win_nums.includes(elem)) hit++;
+ if (elem === 0) not++;
+ })
+ answer.push(7 - (hit + not) < 6 ? 7 - (hit + not) : 6)
+ answer.push(7 - hit < 6 ? 7 - hit : 6)
+ return answer;
+}
\ No newline at end of file
diff --git "a/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js" "b/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js"
new file mode 100644
index 0000000..35df636
--- /dev/null
+++ "b/jiwon/level1/\354\213\240\352\267\234 \354\225\204\354\235\264\353\224\224 \354\266\224\354\262\234.js"
@@ -0,0 +1,36 @@
+function clean_special_char(str) {
+ const special_char = '~!@#$%^&*()=+[{]}:?,<>/';
+ special_char.split('').map((elem) => {
+ let newRegExp = new RegExp('\\' + elem, 'g')
+ str = str.replace(newRegExp, '')
+ })
+ return str
+}
+
+function merge_and_delete_dot(str) {
+ return str.split('.').filter((elem) => elem.length > 0 ).join('.')
+}
+
+function insert_a(str) {
+ if (str.length === 0) return 'a'
+ return str
+}
+
+function slice_length(str) {
+ return merge_and_delete_dot(str.substring(0, 15))
+}
+
+function increase_length(str) {
+ if (str.length >= 3) return str
+ return increase_length(str+str[str.length - 1])
+}
+
+function solution(new_id) {
+ var answer = new_id.toLowerCase();
+ answer = clean_special_char(answer)
+ answer = merge_and_delete_dot(answer)
+ answer = insert_a(answer)
+ answer = slice_length(answer)
+ answer = increase_length(answer)
+ return answer
+}
\ No newline at end of file
diff --git "a/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js" "b/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js"
new file mode 100644
index 0000000..ac430f2
--- /dev/null
+++ "b/jiwon/level2/\352\270\260\353\212\245\352\260\234\353\260\234.js"
@@ -0,0 +1,21 @@
+function solution(progresses, speeds) {
+ var answer = [];
+ const days = progresses.map((output, i) => {
+ const work = 100 - output
+ return Math.ceil(work / speeds[i])
+ })
+ let deploy_day = days[0]
+ let cnt_work = 0
+ days.map((day, i) => {
+ if (deploy_day < day){
+ answer.push(cnt_work)
+ cnt_work = 1
+ deploy_day = days[i]
+ }
+ else {
+ cnt_work++
+ }
+ })
+ answer.push(cnt_work)
+ return answer;
+}
\ No newline at end of file
diff --git "a/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js" "b/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js"
new file mode 100644
index 0000000..fc8cd5a
--- /dev/null
+++ "b/jiwon/level2/\354\247\235\354\247\200\354\226\264\354\240\234\352\261\260\355\225\230\352\270\260.js"
@@ -0,0 +1,10 @@
+function solution(s)
+{
+ const str_stack = []
+ for (let i = 0; i < s.length; i++) {
+ if (str_stack[str_stack.length - 1] === s[i])
+ str_stack.pop()
+ else str_stack.push(s[i])
+ }
+ return str_stack.length > 0 ? 0 : 1;
+}
\ No newline at end of file
diff --git "a/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js" "b/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js"
new file mode 100644
index 0000000..4daf582
--- /dev/null
+++ "b/yena/7week/124 \353\202\230\353\235\274\354\235\230 \354\210\253\354\236\220.js"
@@ -0,0 +1,6 @@
+function solution(n) {
+ if (n < 4) return n === 3 ? "4" : n + "";
+ else if (n % 3 === 0) {
+ return solution(parseInt(n - 1 / 3)) * 1 + 2;
+ } else return solution(parseInt(n / 3)) + solution(n % 3);
+}
diff --git "a/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js" "b/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js"
new file mode 100644
index 0000000..60bb7d1
--- /dev/null
+++ "b/yena/7week/\355\203\200\352\262\237 \353\204\230\353\262\204.js"
@@ -0,0 +1,17 @@
+function solution(numbers, target) {
+ let answer = 0;
+ const numlen = numbers.length;
+
+ function _soultion(number, i) {
+ if (i === numlen) {
+ if (number === target) {
+ answer++;
+ }
+ return;
+ }
+ _soultion(number + numbers[i], i + 1);
+ _soultion(number - numbers[i], i + 1);
+ }
+ _soultion(0, 0);
+ return answer;
+}
diff --git "a/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js" "b/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js"
new file mode 100644
index 0000000..b0b0471
--- /dev/null
+++ "b/yena/8week/\353\251\200\354\251\241\355\225\234 \354\202\254\352\260\201\355\230\225.js"
@@ -0,0 +1,8 @@
+function divisor(max, min) {
+ if (max % min === 0) return min;
+ return divisor(min, max % min);
+}
+function solution(w, h) {
+ const minDivisor = w > h ? divisor(w, h) : divisor(h, w);
+ return w * h - (w + h - minDivisor);
+}
diff --git "a/yena/8week/\354\230\210\354\202\260.js" "b/yena/8week/\354\230\210\354\202\260.js"
new file mode 100644
index 0000000..84cd6ca
--- /dev/null
+++ "b/yena/8week/\354\230\210\354\202\260.js"
@@ -0,0 +1,7 @@
+function solution(d, budget) {
+ let answer = 0;
+ d.sort((a, b) => a - b).forEach((i) => {
+ if (budget - i >= 0) (budget = budget - i), answer++;
+ });
+ return answer;
+}
diff --git "a/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js" "b/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js"
new file mode 100644
index 0000000..add0197
--- /dev/null
+++ "b/yena/8week/\354\235\214\354\226\221\353\215\224\355\225\230\352\270\260.js"
@@ -0,0 +1,7 @@
+function solution(absolutes, signs) {
+ const answer = absolutes.reduce((acc, cur, idx) => {
+ if (signs[idx]) return acc + cur;
+ else return acc - cur;
+ }, 0);
+ return answer;
+}
diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js"
new file mode 100644
index 0000000..d35198a
--- /dev/null
+++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/K\353\262\210\354\247\270 \355\201\260 \354\210\230.js"
@@ -0,0 +1,19 @@
+function solution(n, k, card) {
+ let answer = new Set();
+ for (let i = 0; i < card.length; i++) {
+ for (let j = i + 1; j < card.length; j++) {
+ for (let k = j + 1; k < card.length; k++) {
+ answer.add(card[i] + card[j] + card[k]);
+ }
+ }
+ }
+ answer = [...answer].sort((a, b) => b - a);
+ return answer[k - 1];
+}
+
+let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
+console.log(solution(10, 3, arr));
+
+/**
+ * 합해서 같은 값이 나오는 경우 중복 제거
+ */
diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js"
new file mode 100644
index 0000000..b9e298e
--- /dev/null
+++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\222\244\354\247\221\354\235\200 \354\206\214\354\210\230.js"
@@ -0,0 +1,16 @@
+function isPrime(num) {
+ if (num < 2) return false;
+ for (let i = 2; i * i <= num; i++) {
+ if (num % i === 0) return false;
+ }
+ return true;
+}
+function solution(arr) {
+ const reverseArr = arr.map((i) => {
+ return i.toString().split("").reverse().join("") * 1;
+ });
+ return reverseArr.filter((i) => isPrime(i));
+}
+
+let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100];
+console.log(solution(arr));
diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js"
new file mode 100644
index 0000000..f77e205
--- /dev/null
+++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\353\251\230\355\206\240\353\247\201.js"
@@ -0,0 +1,34 @@
+function solution(test) {
+ const studentNum = test[0].length;
+ const arr = [];
+ for (let i = 0; i < test.length; i++) {
+ for (let j = 0; j < studentNum; j++) {
+ for (let k = j + 1; k < studentNum; k++) {
+ if (i === 0) {
+ arr.push([test[i][j], test[i][k]]);
+ } else {
+ let index = -1;
+ arr.forEach((item, idx) => {
+ if (
+ item.join("") === [test[i][k], test[i][j]].join("")
+ ) {
+ index = idx;
+ return;
+ }
+ });
+ if (index > -1) arr.splice(index, 1);
+ }
+ }
+ }
+ }
+ return arr.length;
+}
+
+let arr = [
+ [3, 4, 1, 2],
+ [1, 4, 5, 2],
+ [4, 3, 2, 1],
+ [3, 1, 4, 2],
+];
+
+console.log(solution(arr));
diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js"
new file mode 100644
index 0000000..e8b5fc9
--- /dev/null
+++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\236\220\353\246\277\354\210\230\354\235\230 \355\225\251.js"
@@ -0,0 +1,13 @@
+function solution(n, arr) {
+ const sumArr = arr.map((item) => {
+ const numArr = item.toString().split("");
+ const sum = numArr.reduce((acc, cur) => +acc + +cur);
+ return sum;
+ });
+ const max = Math.max(...sumArr);
+ const maxArr = arr.filter((i, idx) => sumArr[idx] === max);
+ return Math.max(...maxArr);
+}
+
+let arr = [128, 460, 603, 40, 521, 137, 123];
+console.log(solution(7, arr));
diff --git "a/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js" "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js"
new file mode 100644
index 0000000..7e0585b
--- /dev/null
+++ "b/yena/\354\231\204\354\240\204\355\203\220\354\203\211/\354\241\270\354\227\205 \354\204\240\353\254\274.js"
@@ -0,0 +1,27 @@
+function solution(m, product) {
+ let answer = 0;
+ //const sortFunc = (a, b) => a[0] + a[1] - (b[0] + b[1]);
+ //product.sort(sortFunc);
+ //console.log(product);
+ for (let i = 0; i < product.length; i++) {
+ let tmp = 0;
+ let money = m;
+ for (let j = 0; j < product.length; j++) {
+ if (i == j) money -= product[i][0] / 2 + product[i][1];
+ else money -= product[i][0] + product[i][1];
+ if (money > 0) tmp++;
+ else break;
+ }
+ if (tmp > answer) answer = tmp;
+ }
+ return answer;
+}
+
+let arr = [
+ [8, 6],
+ [2, 2],
+ [4, 3],
+ [4, 5],
+ [12, 1],
+];
+console.log(solution(28, arr));
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js" "b/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js"
new file mode 100644
index 0000000..5e56cea
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\352\263\265\355\206\265\354\233\220\354\206\214 \352\265\254\355\225\230\352\270\260.js"
@@ -0,0 +1,26 @@
+function solution1(arr1, arr2) {
+ const answer = arr1.filter((i) => arr2.includes(i));
+ return answer.sort((a, b) => a - b);
+}
+
+function solution(arr1, arr2) {
+ let p1 = 0;
+ let p2 = 0;
+ const answer = [];
+
+ arr1.sort((a, b) => a - b);
+ arr2.sort((a, b) => a - b);
+ while (p1 < arr1.length && p2 < arr2.length) {
+ if (arr1[p1] === arr2[p2]) {
+ answer.push(arr1[p1]);
+ p1++;
+ p2++;
+ } else if (arr1[p1] > arr2[p2]) p2++;
+ else p1++;
+ }
+ return answer;
+}
+
+let a = [1, 3, 9, 5, 2, 8];
+let b = [3, 2, 5, 7, 8];
+console.log(solution(a, b));
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js" "b/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js"
new file mode 100644
index 0000000..9ff6bb6
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\353\221\220 \353\260\260\354\227\264 \355\225\251\354\271\230\352\270\260.js"
@@ -0,0 +1,21 @@
+function solution(arr1, arr2) {
+ answer = [];
+ while (arr1.length && arr2.length) {
+ const tmp = arr1[0] < arr2[0] ? arr1.shift() : arr2.shift();
+ answer.push(tmp);
+ }
+ for (const num of arr1.length ? arr1 : arr2) {
+ answer.push(num);
+ }
+ return answer;
+}
+
+let a = [1, 3, 5];
+let b = [2];
+console.log(solution(a, b));
+
+/**
+ * 투포인터 (two pointers) 알고리즘 :
+ * - 포인터 두 개를 이동시키면서 O(n)을 구현하는거
+ * - 병합정렬 내부 동작과 비슷함.
+ */
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js" "b/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js"
new file mode 100644
index 0000000..a976de0
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\353\252\250\353\223\240 \354\225\204\353\202\230\352\267\270\353\236\250.js"
@@ -0,0 +1,67 @@
+function solution_my(a, b) {
+ const map = new Map();
+ const target = new Map();
+ const len = b.length;
+ let answer = 0;
+
+ const check_anagram = () => {
+ console.log(target);
+ let add = 1;
+ for (let key of target.keys()) {
+ if (map.get(key) !== target.get(key)) add = 0;
+ }
+ answer += add;
+ console.log(answer);
+ };
+
+ for (let i = 0; i < len; i++) {
+ if (map.has(b[i])) map.set(b[i], map.get(b[i]) + 1);
+ else map.set(b[i], 1);
+ if (target.has(a[i])) target.set(a[i], target.get(a[i]) + 1);
+ else target.set(a[i], 1);
+ }
+ console.log(map, target);
+ check_anagram();
+ for (let i = len; i < a.length; i++) {
+ console.log("target:", a[i], a[i - len]);
+ if (target.has(a[i])) target.set(a[i], target.get(a[i]) + 1);
+ else target.set(a[i], 1);
+ if (target.get(a[i - len]) === 1) target.delete(a[i - len]);
+ else target.set(a[i - len], target.get(a[i - len]) - 1);
+ check_anagram();
+ }
+ return answer;
+}
+
+function solution(s, t) {
+ let answer = 0;
+ let sH = new Map();
+ for (let x of t) {
+ sH.set(x, (sH.get(x) || 0) - 1);
+ }
+ console.log(sH);
+
+ let len = t.length - 1;
+
+ for (let i = 0; i < len; i++) {
+ sH.set(s[i], (sH.get(s[i]) || 0) + 1);
+ if (sH.get(s[i]) === 0) sH.delete(s[i]);
+ }
+ console.log(sH);
+ let lt = 0;
+ for (let rt = len; rt < s.length; rt++) {
+ sH.set(s[rt], (sH.get(s[rt]) || 0) + 1);
+ if (sH.get(s[rt]) === 0) sH.delete(s[rt]);
+
+ if (sH.size === 0) answer++;
+
+ sH.set(s[lt], (sH.get(s[lt]) || 0) - 1);
+ if (sH.get(s[lt]) === 0) sH.delete(s[lt]);
+ lt++;
+ }
+ return answer;
+}
+
+let a = "bacaAacba";
+let b = "abc";
+console.log(solution(a, b));
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js"
new file mode 100644
index 0000000..933cf34
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\225\204\353\202\230\352\267\270\353\236\250.js"
@@ -0,0 +1,21 @@
+function solution(a, b) {
+ const callback = (acc, cur) => {
+ if (acc.has(cur)) acc.set(cur, acc.get(cur) + 1);
+ else acc.set(cur, 1);
+ return acc;
+ };
+
+ const aMap = a.split("").reduce(callback, new Map());
+ const bMap = b.split("").reduce(callback, new Map());
+ console.log(aMap, bMap);
+
+ if (aMap.size !== bMap.size) return "NO";
+ for (let key of aMap.keys()) {
+ if (aMap.get(key) !== bMap.get(key)) return "NO";
+ }
+ return "YES";
+}
+
+let a = "AbaAeC3";
+let b = "baeeACA";
+console.log(solution(a, b));
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js"
new file mode 100644
index 0000000..1cf172f
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2641.js"
@@ -0,0 +1,58 @@
+function solution_old1(num, arr) {
+ let answer = 0;
+ for (let i = 0; i < arr.length; i++) {
+ let tmp = arr[i];
+ if (tmp === num) answer++;
+ for (let j = i + 1; j < arr.length || tmp > num; j++) {
+ tmp += arr[j];
+ if (tmp === num) answer++;
+ }
+ }
+ return answer;
+}
+
+function solution_old2(num, arr) {
+ let p1 = 0;
+ let p2 = 0;
+ let cnt = 0;
+ let answer = 0;
+
+ while (p1 < arr.length && p2 < arr.length) {
+ cnt += arr[p2];
+ if (cnt < num) {
+ p2++;
+ } else {
+ if (cnt === num) answer++;
+ cnt = 0;
+ p1++;
+ p2 = p1;
+ }
+ }
+ return answer;
+}
+
+function solution(num, arr) {
+ let p1 = 0;
+ let p2 = 0;
+ let cnt = 0;
+ let answer = 0;
+
+ while (p2 < arr.length) {
+ cnt += arr[p2++];
+ if (cnt === num) {
+ answer++;
+ }
+ while (cnt >= num) {
+ cnt -= arr[p1];
+ p1++;
+ if (cnt === num) {
+ console.log("");
+ answer++;
+ }
+ }
+ }
+ return answer;
+}
+
+let a = [1, 2, 1, 3, 1, 1, 1, 2];
+console.log(solution(6, a));
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js"
new file mode 100644
index 0000000..7a7188d
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\227\260\354\206\215 \353\266\200\353\266\204\354\210\230\354\227\2642.js"
@@ -0,0 +1,24 @@
+function solution(num, arr) {
+ let lt = 0;
+ let rt = 0;
+ let sum = 0;
+ let answer = 0;
+
+ for (rt = 0; rt < arr.length; rt++) {
+ sum += arr[rt];
+ if (sum <= num) answer += rt - lt + 1;
+ while (sum > num && lt < arr.length) {
+ sum -= arr[lt];
+ lt++;
+ if (sum <= num) answer += rt - lt + 1;
+ }
+ }
+ return answer;
+}
+
+let a = [1, 3, 1, 2, 3];
+console.log(solution(5, a));
+
+/**
+ * 부분수열 더하기 rt - lt + 1 가 핵심..
+ */
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js" "b/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js"
new file mode 100644
index 0000000..4af81ad
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\354\265\234\353\214\200 \353\247\244\354\266\234.js"
@@ -0,0 +1,37 @@
+function solution_old1(k, arr) {
+ let max = -1;
+ for (let i = 0; i < arr.length; i++) {
+ let sum = 0;
+ for (j = i; j < i + k && j < arr.length; j++) {
+ sum += arr[j];
+ }
+ if (max < sum) {
+ max = sum;
+ }
+ }
+ return max;
+}
+
+function solution(k, arr) {
+ let max = 0;
+ let sum = 0;
+ for (let i = 0; i < arr.length; i++) {
+ if (i < k) {
+ max += arr[i];
+ sum = max;
+ } else {
+ sum -= arr[i - k];
+ sum += arr[i];
+ if (max < sum) max = sum;
+ }
+ console.log(sum);
+ }
+ return max;
+}
+
+let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15];
+console.log(solution(3, a));
+
+/**
+ * solution_old1 : for문을 두번 돌려 시간복잡도가 O(n^2)
+ */
diff --git "a/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js" "b/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js"
new file mode 100644
index 0000000..c612845
--- /dev/null
+++ "b/yena/\355\232\250\354\234\250\354\204\261/\355\225\231\352\270\211 \355\232\214\354\236\245.js"
@@ -0,0 +1,19 @@
+function solution(str) {
+ const arr = str.split("");
+ let max = 0;
+ let maxChar;
+
+ const answer = arr.reduce((acc, cur) => {
+ acc[cur] = acc[cur] === undefined ? 1 : acc[cur] + 1;
+ if (acc[cur] > max) {
+ max = acc[cur];
+ maxChar = cur;
+ }
+ return acc;
+ }, {});
+ console.log(answer);
+ return maxChar;
+}
+
+let str = "BACBACCACCBDEDE";
+console.log(solution(str));