Skip to content
15 changes: 15 additions & 0 deletions 도윤/week5/[Lv 1] MemoryScore.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// Lv 1. 추억 점수 - 연습문제
function solution(name, yearning, photo) {
let missingScore = [];
let tmpScr = 0;
for (let i = 0; i < photo.length; i++) {
tmpScr = 0;
for (let j = 0; j < photo[i].length; j++) {
if (name.includes(photo[i][j])) {
tmpScr += yearning[name.indexOf(photo[i][j])];
}
}
missingScore.push(tmpScr);
}
return missingScore;
}
13 changes: 13 additions & 0 deletions 도윤/week5/[Lv 1] SecretCode.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Lv 1. 둘만의 암호 - 연습문제
function solution(s, skip, index) {
let answer = "";
const alphArr = Array(26)
.fill()
.map((v, i) => String.fromCharCode(i + 97))
.filter((elm) => !skip.includes(elm));
s.split("").forEach((elm, idx) => {
let newIdx = (alphArr.indexOf(elm) + index) % alphArr.length;
answer += alphArr[newIdx];
});
return answer;
}
23 changes: 23 additions & 0 deletions 도윤/week5/[Lv 1] Test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Lv 1. 모의고사 - 완전탐색
function solution(answers) {
const sol1 = [1, 2, 3, 4, 5],
sol2 = [2, 1, 2, 3, 2, 4, 2, 5],
sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let cnt1 = 0,
cnt2 = 0,
cnt3 = 0;
const answer = [];

answers.forEach((elm, idx) => {
if (sol1[idx % sol1.length] === elm) cnt1++;
if (sol2[idx % sol2.length] === elm) cnt2++;
if (sol3[idx % sol3.length] === elm) cnt3++;
});

const max = Math.max(cnt1, cnt2, cnt3);
if (cnt1 === max) answer.push(1);
if (cnt2 === max) answer.push(2);
if (cnt3 === max) answer.push(3);

return answer;
}
13 changes: 13 additions & 0 deletions 도윤/week5/[Lv 2] Fibonacci.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Lv 2. 피보나치 수 - 연습문제
function solution(n) {
let add1 = 0,
add2 = 1,
sum = 0,
mod = 0;
for (let i = 2; i <= n; i++) {
sum = (add1 + add2) % 1234567;
add1 = add2;
add2 = sum;
}
return sum;
}
22 changes: 22 additions & 0 deletions 도윤/week5/[Lv 2] NextBigNumber.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Lv 2. 다음 큰 숫자 - 연습문제
function solution(n) {
const findCnt = (num) => {
return num
.toString(2)
.split("")
.filter((elm) => elm === "1").length;
};

let start = n + 1;
let oneCnt = 0;

while (true) {
oneCnt = findCnt(start);
if (oneCnt === findCnt(n)) {
break;
}
start++;
}

return start;
}
8 changes: 8 additions & 0 deletions 도윤/week6/[Lv 1] FoodFight.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Lv 1. 푸드 파이트 대회 - 연습문제
function solution(food) {
let perFood = [];
for (let i = 1; i < food.length; i++) {
perFood.push(i.toString().repeat(Math.floor(food[i] / 2)));
}
return perFood.join("") + "0" + perFood.reverse().join("");
}
30 changes: 30 additions & 0 deletions 도윤/week6/[Lv 1] Noncompletion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Lv 1. 완주하지 못한 선수 - 해시
function solution(participant, completion) {
let answer = "";

participant.sort();
completion.sort();

for (let i = 0; i < participant.length; i++) {
if (participant[i] !== completion[i]) {
answer = participant[i];
break;
}
}
return answer;
}

// 첫번째 풀이 - 효율성 검사 통과 X
// function solution(participant, completion){
// let idx = -1;
// let answer = "";
// participant.forEach((elm)=> {
// if(completion.includes(elm)){
// idx = completion.indexOf(elm);
// completion.splice(idx, 1);
// }else{
// answer = elm;
// }
// })
// return answer;
// }
12 changes: 12 additions & 0 deletions 도윤/week6/[Lv 1] Paint.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Lv 1. 덧칠하기 - 연습문제
function solution(n, m, section) {
let paint = 0,
answer = 0;
section.forEach((elm) => {
if (elm > paint) {
paint = elm + (m - 1);
answer++;
}
});
return answer;
}
12 changes: 12 additions & 0 deletions 도윤/week6/[Lv 1] Ranking .js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Lv 1. 명예의 전당 (1) - 연습문제
function solution(k, score) {
let rank = [],
answer = [];

for (let i = 0; i < score.length; i++) {
rank.push(score[i]);
rank = rank.sort((a, b) => b - a).slice(0, k);
answer.push(Math.min(...rank));
}
return answer;
}
25 changes: 25 additions & 0 deletions 도윤/week6/[Lv 2] Bracket.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Lv 2. 올바른 괄호 - 스택/큐
function solution(s) {
const stack = [];

for (let i = 0; i < s.length; i++) {
stack[stack.length - 1] === "(" && s[i] === ")"
? stack.pop()
: stack.push(s[i]);
}

return stack.length === 0 ? true : false;
}

/*
효율성 검사 통과 풀이
function solution(s){
const stack = [];

for(let i = 0; i < s.length; i++){
(stack[stack.length-1] === "(" && s[i] === ")") ? stack.pop() : stack.push(s[i]);

}

return !stack.length;
} */
13 changes: 13 additions & 0 deletions 도윤/week6/[Lv 2] PairEliminate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Lv 2. 짝지어 제거하기 - 2017 탑스타운
function solution(s) {
//stack 사용
const stack = [];
for (let i = 0; i < s.length; i++) {
if (stack[stack.length - 1] !== s[i]) {
stack.push(s[i]);
} else {
stack.pop();
}
}
return stack.length === 0 ? 1 : 0;
}
16 changes: 16 additions & 0 deletions 도윤/week7/[Lv 1] BunchOfCared.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Lv 1. 카드 뭉치 - 연습문제
function solution(cards1, cards2, goal) {
let answer = "";
for (let i = 0; i < goal.length; i++) {
if (cards1[0] === goal[i]) {
cards1.shift();
} else if (cards2[0] === goal[i]) {
cards2.shift();
} else {
answer = "No";
break;
}
answer = "Yes";
}
return answer;
}
29 changes: 29 additions & 0 deletions 도윤/week7/[Lv 1] Clothes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Lv 1. 체육복 - 탐욕법(Greedy)
function solution(n, lost, reserve) {
//가져왔는데 도난당한 경우 (reserve와 lost에서 모두 제거)
let newReserve = reserve
.filter((elm) => {
return !lost.includes(elm);
})
.sort((a, b) => a - b);

let newLost = lost
.filter((elm) => {
return !reserve.includes(elm);
})
.sort((a, b) => a - b);

//answer의 초기값: 총 n명 중 가져오지 않은 사람(가져왔는데 도난당한 사람 제외)
let answer = n - newLost.length;

newLost.forEach((elm) => {
if (newReserve && newReserve.includes(elm - 1)) {
answer++;
newReserve = newReserve.filter((res) => res !== elm - 1);
} else if (newReserve && newReserve.includes(elm + 1)) {
answer++;
newReserve = newReserve.filter((res) => res !== elm + 1);
}
});
return answer;
}