Skip to content

[week 10] 주간 결산_이도윤 #31

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 34 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 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
39d4a28
[Lv 1] 문자열 내 마음대로 정렬하기
doyn511 Dec 13, 2023
bf7ad66
[Lv 1] 대충 만든 자판
doyn511 Dec 15, 2023
1b1e9c1
[Lv 1] 숫자 짝꿍 (solve)
doyn511 Dec 16, 2023
04c61df
[Lv 2] 멀리 뛰기
doyn511 Dec 16, 2023
9072972
[Lv 2] N개의 최소공배수
doyn511 Dec 17, 2023
cd0e1ea
[Lv 2] 귤 고르기
doyn511 Dec 17, 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
30 changes: 30 additions & 0 deletions 도윤/week10/[Lv 1] Keyboard.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Lv 1. 대충 만든 자판 - 연습문제

const setKeymap = (keymap) => {
const keyLocation = new Map();

keymap.forEach((key) => {
for (let i = 0; i < key.length; i++) {
if (!keyLocation.has(key[i]) || i + 1 < keyLocation.get(key[i])) {
keyLocation.set(key[i], i + 1);
}
}
});
return keyLocation;
};

function solution(keymap, targets) {
const result = [];
const keyLocation = setKeymap(keymap);
let count;

targets.forEach((target) => {
count = 0;
for (let i = 0; i < target.length; i++) {
count += keyLocation.get(target[i]);
}

isNaN(count) ? result.push(-1) : result.push(count);
});
return result;
}
30 changes: 30 additions & 0 deletions 도윤/week10/[Lv 1] NumberPair.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//Lv 1. 숫자 짝꿍 - 연습문제 (solve!)
function solution(X, Y) {
const xArr = new Array(10).fill(0);
const yArr = new Array(10).fill(0);

for (x of X) {
xArr[x] += 1;
}
for (y of Y) {
yArr[y] += 1;
}

const numberPair = [];
for (let i = 0; i < 10; i++) {
numberPair.push(Math.min(xArr[i], yArr[i]));
}

let answer = "";
numberPair.forEach((elm, idx) => {
answer += idx.toString().repeat(elm);
});

if (answer.length === 0) {
return "-1";
} else {
answer = answer.split("").reverse().join("");

return answer[0] === "0" ? "0" : answer;
}
}
13 changes: 13 additions & 0 deletions 도윤/week10/[Lv 1] SortingString.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// Lv 1. 문자열 내 마음대로 정렬하기 - 연습문제
function solution(strings, n) {
strings.sort((a, b) => {
//n번째 인덱스별로 정렬
if (a[n] !== b[n]) {
return a[n] > b[n] ? 1 : -1;
} else {
//문자열 정렬
return a > b ? 1 : -1;
}
});
return strings;
}
19 changes: 19 additions & 0 deletions 도윤/week10/[Lv 2] GCM.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// Lv 2. N개의 최소공배수 - 연습문제
function findGCD(a, b) {
let mod = a % b;
return !mod ? b : findGCD(b, mod);
}

function findGCM(a, b) {
return (a * b) / findGCD(a, b);
}

function solution(arr) {
let answer = 1;

arr.forEach((elm) => {
answer = findGCM(answer, elm);
});

return answer;
}
12 changes: 12 additions & 0 deletions 도윤/week10/[Lv 2] Jumping.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Lv 2. 멀리 뛰기 - 연습문제
function solution(n) {
const answer = new Array(n + 1).fill(0);
answer[0] = 1;
answer[1] = 1;
const MOD = 1234567;

for (let i = 2; i <= n; i++)
answer[i] = (answer[i - 1] + answer[i - 2]) % MOD;

return answer[n];
}
24 changes: 24 additions & 0 deletions 도윤/week10/[Lv 2] Tangerine.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Lv 2. 귤 고르기 - 연습문제
function solution(k, tangerine) {
const kgMap = new Map();
let answer = 0;

tangerine.forEach((elm) => {
if (kgMap.has(elm)) {
kgMap.set(elm, kgMap.get(elm) + 1);
} else {
kgMap.set(elm, 1);
}
});

const arr = [...kgMap].sort((a, b) => b[1] - a[1]);

arr.forEach((elm) => {
if (k > 0) {
k -= elm[1];
answer++;
}
});

return answer;
}
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;
}
Loading