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 9] 주간 결산_이도윤 #28

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
bc0814f
Lv 1. 모의고사
doyn511 Nov 9, 2023
7440ab9
Lv 1. 추억 점수
doyn511 Nov 10, 2023
50e3bc6
[Lv 2] 다음 큰 숫자
doyn511 Nov 10, 2023
367c052
[Lv 2] 피보나치 수
doyn511 Nov 11, 2023
d6ffbfc
[Lv 1] 둘만의 암호
doyn511 Nov 11, 2023
bbad630
[Lv 1] 푸드 파이트 대회
doyn511 Nov 15, 2023
65ccd12
[Lv 1] 푸드 파이트 대회 파일 제목 변경
doyn511 Nov 15, 2023
da43916
[Lv 2] 올바른 괄호
doyn511 Nov 15, 2023
336ff25
[Lv 1] 덧칠하기
doyn511 Nov 16, 2023
505703d
[Lv 1] 완주하지 못한 선수
doyn511 Nov 18, 2023
6d1513d
[Lv 2] 짝지어 제거하기
doyn511 Nov 18, 2023
c195318
[Lv 1] 명예의 전당(1)
doyn511 Nov 19, 2023
9f04a02
[Lv 1] 카드 뭉치
doyn511 Nov 21, 2023
64ea8fb
[Lv 1] 체육복
doyn511 Nov 24, 2023
3f32a7b
[Lv 1] 포켓몬
doyn511 Nov 29, 2023
dc72cd8
[Lv 1] 두 개 뽑아서 더하기
doyn511 Dec 1, 2023
2722a5f
[Lv 1] 숫자 짝꿍
doyn511 Dec 2, 2023
5c0a395
[Lv 2] 구명보트
doyn511 Dec 2, 2023
aab3280
[Lv 1] 옹알이(2)
doyn511 Dec 3, 2023
2412d27
[Lv 2] 점프와 순간이동
doyn511 Dec 3, 2023
85c67f9
[Lv 1] 영어 끝말잇기
doyn511 Dec 6, 2023
7959a8c
[Lv 2] 영어 끝말잇기 파일명 변경
doyn511 Dec 6, 2023
b11952f
[Lv 2] 영어 끝말잇기
doyn511 Dec 6, 2023
d95e404
[Lv 1] [1차] 다트게임
doyn511 Dec 6, 2023
fb0037e
[Lv 1] 로또의 최고 순위와 최저 순위
doyn511 Dec 8, 2023
c6bc3b7
[Lv 1] 달리기 경주
doyn511 Dec 9, 2023
70c6537
[Lv 2] 카펫
doyn511 Dec 10, 2023
4c2954c
[Lv 2] 예상 대진표
doyn511 Dec 10, 2023
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;
}
40 changes: 40 additions & 0 deletions 도윤/week9/[Lv 1] LottoRanking.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Lv 1. 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기)
const calculateRank = (count) => {
switch (count) {
case 2:
return 5;
case 3:
return 4;
case 4:
return 3;
case 5:
return 2;
case 6:
return 1;
default:
return 6;
}
};

function solution(lottos, win_nums) {
const new_lottos = lottos.filter((elm) => elm !== 0);
const zero_nums = lottos.length - new_lottos.length;
let count = 0;

new_lottos.forEach((num) => {
if (win_nums.includes(num)) {
win_nums.splice(win_nums.indexOf(num), 1);
count++;
}
});

let min = 0,
max = 0;
if (count === 6) {
return [1, 1];
} else {
min = count;
max = count + zero_nums;
return [calculateRank(max), calculateRank(min)];
}
}
Loading