Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions 연서/week8/level 1/2016년.js
Original file line number Diff line number Diff line change
@@ -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];
}
13 changes: 13 additions & 0 deletions 연서/week8/level 1/기사단원의무기.js
Original file line number Diff line number Diff line change
@@ -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;
}
20 changes: 20 additions & 0 deletions 연서/week8/level 1/소수만들기.js
Original file line number Diff line number Diff line change
@@ -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;
}
7 changes: 7 additions & 0 deletions 연서/week8/level 1/예산.js
Original file line number Diff line number Diff line change
@@ -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);
}
15 changes: 15 additions & 0 deletions 연서/week8/level 1/카드뭉치.js
Original file line number Diff line number Diff line change
@@ -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";
}
29 changes: 29 additions & 0 deletions 연서/week8/level 2/괄호회전하기.js
Original file line number Diff line number Diff line change
@@ -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;
}
53 changes: 53 additions & 0 deletions 연서/week8/level 2/모음사전.js
Original file line number Diff line number Diff line change
@@ -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
18 changes: 18 additions & 0 deletions 연서/week8/level 2/숫자의표현.js
Original file line number Diff line number Diff line change
@@ -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;
}
16 changes: 16 additions & 0 deletions 연서/week8/level 2/타겟넘버.js
Original file line number Diff line number Diff line change
@@ -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;
}
11 changes: 11 additions & 0 deletions 연서/week8/level 2/튜플.js
Original file line number Diff line number Diff line change
@@ -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;
}