Skip to content

[week 7] 주간 결산_이도윤 #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
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;
}