diff --git "a/\354\227\260\354\204\234/week8/level 1/2016\353\205\204.js" "b/\354\227\260\354\204\234/week8/level 1/2016\353\205\204.js" new file mode 100644 index 0000000..63c7525 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 1/2016\353\205\204.js" @@ -0,0 +1,22 @@ +function solution(a, b) { + //윤년은 2월 29일까지 있음 + let answer = ""; + let sum_day = 0; + const day = ["THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"]; + const month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + for (let i = 0; i < a - 1; i++) { + //월별 일 수 더하기 + sum_day += month[i]; + } + sum_day += b; + answer += day[sum_day % 7]; + return answer; +} + +//다른 풀이 new Date() 활용 +function solution(a, b) { + let day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]; + let date = new Date(`${a}, ${b}, 2016`).getDay(); + //getDay는 날짜의 요일을 0~6으로 바꿔주는 메소드 + return day[date]; +} diff --git "a/\354\227\260\354\204\234/week8/level 1/\352\270\260\354\202\254\353\213\250\354\233\220\354\235\230\353\254\264\352\270\260.js" "b/\354\227\260\354\204\234/week8/level 1/\352\270\260\354\202\254\353\213\250\354\233\220\354\235\230\353\254\264\352\270\260.js" new file mode 100644 index 0000000..a5b99c6 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 1/\352\270\260\354\202\254\353\213\250\354\233\220\354\235\230\353\254\264\352\270\260.js" @@ -0,0 +1,13 @@ +function solution(number, limit, power) { + var answer = 0; + for (let n = 1; n <= number; n++) { + let count = 0; + for (let j = 1; j * j <= n; j++) { + if (j * j == n) count++; + else if (n % j == 0) count += 2; + } + if (count > limit) count = power; + answer += count; + } + return answer; +} diff --git "a/\354\227\260\354\204\234/week8/level 1/\354\206\214\354\210\230\353\247\214\353\223\244\352\270\260.js" "b/\354\227\260\354\204\234/week8/level 1/\354\206\214\354\210\230\353\247\214\353\223\244\352\270\260.js" new file mode 100644 index 0000000..f166e16 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 1/\354\206\214\354\210\230\353\247\214\353\223\244\352\270\260.js" @@ -0,0 +1,20 @@ +function solution(nums) { + let arr = []; + for (let i = 0; i < nums.length; i++) { + for (let j = i + 1; j < nums.length; j++) { + for (let k = j + 1; k < nums.length; k++) { + arr.push(nums[i] + nums[j] + nums[k]); + } + } + } + + //소수인지 판별 + return arr.filter((v) => { + if (v < 2) return false; + + for (let i = 2; i <= Math.sqrt(v); i++) { + if (v % i === 0) return false; + } + return true; + }).length; +} diff --git "a/\354\227\260\354\204\234/week8/level 1/\354\230\210\354\202\260.js" "b/\354\227\260\354\204\234/week8/level 1/\354\230\210\354\202\260.js" new file mode 100644 index 0000000..8bf2634 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 1/\354\230\210\354\202\260.js" @@ -0,0 +1,7 @@ +function solution(d, budget) { + return d + .sort((a, b) => a - b) + .reduce((count, price) => { + return count + Number((budget -= price) >= 0); + }, 0); +} diff --git "a/\354\227\260\354\204\234/week8/level 1/\354\271\264\353\223\234\353\255\211\354\271\230.js" "b/\354\227\260\354\204\234/week8/level 1/\354\271\264\353\223\234\353\255\211\354\271\230.js" new file mode 100644 index 0000000..71f12e5 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 1/\354\271\264\353\223\234\353\255\211\354\271\230.js" @@ -0,0 +1,15 @@ +function solution(cards1, cards2, goal) { + let answer = true; + + goal.map((targetWord) => { + if (cards1[0] === targetWord) { + cards1.shift(); + } else if (cards2[0] === targetWord) { + cards2.shift(); + } else { + answer = false; + } + }); + + return answer ? "Yes" : "No"; +} diff --git "a/\354\227\260\354\204\234/week8/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" "b/\354\227\260\354\204\234/week8/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" new file mode 100644 index 0000000..0b5a6fa --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 2/\352\264\204\355\230\270\355\232\214\354\240\204\355\225\230\352\270\260.js" @@ -0,0 +1,29 @@ +function solution(s) { + if (s.length % 2 === 1) return 0; + + let answer = 0; + const correctSet = { + "}": "{", + "]": "[", + ")": "(", + }; + + for (let i = 0; i < s.length; i++) { + const stack = []; + const rotate = s.slice(i) + s.slice(0, i); + let flag = true; + rotate.split("").forEach((target) => { + if (target === "{" || target === "[" || target === "(") { + stack.push(target); + } else { + if (stack.pop() !== correctSet[target]) { + flag = false; + return; + } + } + }); + + if (flag) answer++; + } + return answer; +} diff --git "a/\354\227\260\354\204\234/week8/level 2/\353\252\250\354\235\214\354\202\254\354\240\204.js" "b/\354\227\260\354\204\234/week8/level 2/\353\252\250\354\235\214\354\202\254\354\240\204.js" new file mode 100644 index 0000000..ae766b6 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 2/\353\252\250\354\235\214\354\202\254\354\240\204.js" @@ -0,0 +1,53 @@ +function solution(word) { + const stack1 = ["A", "E", "I", "O", "U"], + stack2 = [], + stack3 = [], + stack4 = [], + stack5 = []; + + stack1.forEach((str) => { + for (let i = 0; i <= 4; i++) { + stack2.push(str.concat(stack1[i])); + } + }); + + stack2.forEach((str) => { + for (let i = 0; i <= 4; i++) { + stack3.push(str.concat(stack1[i])); + } + }); + + stack3.forEach((str) => { + for (let i = 0; i <= 4; i++) { + stack4.push(str.concat(stack1[i])); + } + }); + + stack4.forEach((str) => { + for (let i = 0; i <= 4; i++) { + stack5.push(str.concat(stack1[i])); + } + }); + + const words = [...stack1, ...stack2, ...stack3, ...stack4, ...stack5]; + + words.sort(); + const answer = words.indexOf(word) + 1; + return answer; +} + +//다른 풀이 - 각 자리수별 경우의 수 구하기 +function solution(word) { + const obj = { + A: 0, + E: 1, + I: 2, + O: 3, + U: 4, + }; + const plus = [781, 156, 31, 6, 1]; + return word + .split("") + .reduce((acc, ch, idx) => acc + obj[ch] * plus[idx] + 1, 0); +} +// 출처 : https://jinn2u.tistory.com/9 diff --git "a/\354\227\260\354\204\234/week8/level 2/\354\210\253\354\236\220\354\235\230\355\221\234\355\230\204.js" "b/\354\227\260\354\204\234/week8/level 2/\354\210\253\354\236\220\354\235\230\355\221\234\355\230\204.js" new file mode 100644 index 0000000..e37e28e --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 2/\354\210\253\354\236\220\354\235\230\355\221\234\355\230\204.js" @@ -0,0 +1,18 @@ +function solution(n) { + let answer = 0; + let cnt = 0; + for (let i = 1; i <= n; i++) { + for (let j = i; j <= n; j++) { + answer += j; + if (answer === n) { + cnt++; + answer = 0; + break; + } else if (answer > n) { + answer = 0; + break; + } + } + } + return cnt; +} diff --git "a/\354\227\260\354\204\234/week8/level 2/\355\203\200\352\262\237\353\204\230\353\262\204.js" "b/\354\227\260\354\204\234/week8/level 2/\355\203\200\352\262\237\353\204\230\353\262\204.js" new file mode 100644 index 0000000..44fa620 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 2/\355\203\200\352\262\237\353\204\230\353\262\204.js" @@ -0,0 +1,16 @@ +function solution(numbers, target) { + let answer = 0; + dfs(0, 0); + + function dfs(x, value) { + if (x < numbers.length) { + dfs(x + 1, value + numbers[x]); + dfs(x + 1, value - numbers[x]); + } else { + if (value === target) { + answer++; + } + } + } + return answer; +} diff --git "a/\354\227\260\354\204\234/week8/level 2/\355\212\234\355\224\214.js" "b/\354\227\260\354\204\234/week8/level 2/\355\212\234\355\224\214.js" new file mode 100644 index 0000000..ca69e68 --- /dev/null +++ "b/\354\227\260\354\204\234/week8/level 2/\355\212\234\355\224\214.js" @@ -0,0 +1,11 @@ +function solution(s) { + const answer = []; + const arr = JSON.parse(s.replace(/{/g, "[").replace(/}/g, "]")); + arr.sort((a, b) => a.length - b.length); + arr.forEach((col) => { + col.forEach((row) => { + if (!answer.includes(row)) answer.push(row); + }); + }); + return answer; +}