Skip to content
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

[week 8] 주간 결산_이도윤 #25

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
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
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;
}
18 changes: 18 additions & 0 deletions 도윤/week8/[Lv 1] Babbling(2).js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Lv 1. 옹알이(2) - 연습문제
function solution(babbling) {
const babblingList = ["aya", "ye", "woo", "ma"];
let count = 0;

for (bab of babbling) {
for (word of babblingList) {
if (bab.includes(word.repeat(2))) {
break;
}
bab = bab.split(word).join(" ");
}
if (bab.split(" ").join("").length === 0) {
count++;
}
}
return count;
}
27 changes: 27 additions & 0 deletions 도윤/week8/[Lv 1] NumberPair.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Lv 1. 숫자 짝꿍 - 연습문제 -> 11 ~ 15 시간초과
function solution(X, Y) {
const XArr = X.toString().split("");
const YArr = Y.toString().split("");
const maxLen = Math.max(XArr.length, YArr.length);
const answer = [];

for (let i = 0; i < maxLen; i++) {
const tmp = XArr[i];
if (YArr.includes(tmp)) {
answer.push(tmp);
YArr.splice(YArr.indexOf(tmp), 1);
}
}

const answerSet = new Set(answer);

if (answer.length === 0) {
return "-1";
}
if (answerSet.size === 1 && answerSet.has("0")) {
console.log("here");
return "0";
}

return answer.sort((a, b) => b - a).join("");
}
7 changes: 7 additions & 0 deletions 도윤/week8/[Lv 1] Pokemon.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Lv 1. 포켓몬 - 해시
function solution(nums) {
const numSets = new Set(nums);
const maxCount = Math.floor(nums.length / 2);

return numSets.size > maxCount ? maxCount : numSets.size;
}
14 changes: 14 additions & 0 deletions 도윤/week8/[Lv 1] SelectAndAdd.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Lv 1. 두 개 뽑아서 더하기
function solution(numbers) {
const answer = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
if (!answer.includes(numbers[i] + numbers[j])) {
answer.push(numbers[i] + numbers[j]);
} else {
continue;
}
}
}
return answer.sort((a, b) => a - b);
}
14 changes: 14 additions & 0 deletions 도윤/week8/[Lv 2] Jump&Teleportation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Lv 2. 점프와 순간이동 - Summer/Winter Coding(~2018)
function solution(n) {
let use = 0;

while (n !== 0) {
if (n % 2 === 0) {
n = n / 2;
} else {
n--;
use++;
}
}
return use;
}
12 changes: 12 additions & 0 deletions 도윤/week8/[Lv 2] RescueBoat.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Lv 2. 구명보트 - 탐욕법(Greedy)
function solution(people, limit) {
let count = 0;
let j = people.length - 1;
people.sort((a, b) => b - a);

for (let i = 0; i <= j; i++) {
people[i] + people[j] <= limit && j--;
count++;
}
return count;
}