diff --git "a/\354\227\260\354\204\234/week7/level 1/3\354\247\204\353\262\225\353\222\244\354\247\221\352\270\260.js" "b/\354\227\260\354\204\234/week7/level 1/3\354\247\204\353\262\225\353\222\244\354\247\221\352\270\260.js" new file mode 100644 index 0000000..4a1d0a6 --- /dev/null +++ "b/\354\227\260\354\204\234/week7/level 1/3\354\247\204\353\262\225\353\222\244\354\247\221\352\270\260.js" @@ -0,0 +1,3 @@ +function solution(n) { + return parseInt(n.toString(3).split("").reverse().join(""), 3); +} diff --git "a/\354\227\260\354\204\234/week7/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/week7/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..bdc9062 --- /dev/null +++ "b/\354\227\260\354\204\234/week7/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) { + let 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/week7/level 1/\354\206\214\354\210\230\354\260\276\352\270\260.js" "b/\354\227\260\354\204\234/week7/level 1/\354\206\214\354\210\230\354\260\276\352\270\260.js" new file mode 100644 index 0000000..62d3b1b --- /dev/null +++ "b/\354\227\260\354\204\234/week7/level 1/\354\206\214\354\210\230\354\260\276\352\270\260.js" @@ -0,0 +1,19 @@ +function solution(n) { + // 2부터 n까지의 수로 구성된 Set + const s = new Set(); + for (let i = 2; i <= n; i++) { + s.add(i); + } + + // 2부터 n의 제곱근보다 작은 최대 정수까지 + for (let j = 2; j < Math.sqrt(n); j++) { + // Set에 해당 수가 포함되면 + if (s.has(j)) { + // 그 수를 제외하고 그 수의 배수는 모두 삭제 + for (let k = j * 2; k <= n; k += j) { + s.delete(k); + } + } + } + return s.size; +} diff --git "a/\354\227\260\354\204\234/week7/level 2/\353\213\244\354\235\214\355\201\260\354\210\253\354\236\220.js" "b/\354\227\260\354\204\234/week7/level 2/\353\213\244\354\235\214\355\201\260\354\210\253\354\236\220.js" new file mode 100644 index 0000000..9eccce4 --- /dev/null +++ "b/\354\227\260\354\204\234/week7/level 2/\353\213\244\354\235\214\355\201\260\354\210\253\354\236\220.js" @@ -0,0 +1,10 @@ +function solution(n) { + const cntOneBinary = (num) => num.toString(2).replace(/0/gi, "").length; + + let answer = n + 1; + + while (answer > n) { + if (cntOneBinary(answer) === cntOneBinary(n)) return answer; + answer++; + } +} diff --git "a/\354\227\260\354\204\234/week7/level 2/\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.js" "b/\354\227\260\354\204\234/week7/level 2/\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.js" new file mode 100644 index 0000000..c566e6a --- /dev/null +++ "b/\354\227\260\354\204\234/week7/level 2/\354\240\204\355\231\224\353\262\210\355\230\270\353\252\251\353\241\235.js" @@ -0,0 +1,13 @@ +function solution(phone_book) { + phone_book.sort(); + + for (let i = 0; i < phone_book.length - 1; i++) { + if ( + phone_book[i] === phone_book[i + 1].substring(0, phone_book[i].length) + ) { + return false; + } + } + + return true; +} diff --git "a/\354\227\260\354\204\234/week7/level 2/\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.js" "b/\354\227\260\354\204\234/week7/level 2/\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.js" new file mode 100644 index 0000000..9e85f39 --- /dev/null +++ "b/\354\227\260\354\204\234/week7/level 2/\355\201\260\354\210\230\353\247\214\353\223\244\352\270\260.js" @@ -0,0 +1,16 @@ +function solution(number, k) { + let stack = []; + for (let i = 0; i < number.length; i++) { + let value = number[i]; + //마지막 숫자와 현재 숫자를 비교하며 현재 숫자가 더 크면 해당 숫자를 pop + while (k > 0 && stack[stack.length - 1] < value) { + // 현재 숫자보다 큰 수가 나올때까지 최대 k번 반복 + stack.pop(); + k--; + } + stack.push(value); + } + // 모든 숫자를 비교한 후 k가 0보다 크면 남은 k만큼 뒤에서 제거 + stack.splice(stack.length - k, k); + return stack.join(""); +}