Skip to content

[week 6] 주간 결산_이도윤 #19

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 22 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
16 changes: 16 additions & 0 deletions 도윤/week3/[Lv 1]AdjacentSameLetter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//Lv 1. 가장 가까운 같은 글자 - 연습문제
function solution(s) {
const letters = [],
answer = [];

s.split("").forEach((elm, idx) => {
if (!letters.includes(elm)) {
answer.push(-1);
letters.push(elm);
} else {
answer.push(idx - letters.lastIndexOf(elm));
letters.push(elm);
}
});
return answer;
}
14 changes: 14 additions & 0 deletions 도윤/week3/[Lv 1]Knum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//Lv 1. K번째수 - 정렬
function solution(array, commands) {
let res = [],
tmp = [];
let start = 0,
end = 0;
commands.forEach((elm) => {
start = elm[0] - 1;
end = elm[1] - 1;
tmp = array.slice(start, end + 1).sort((a, b) => a - b);
res.push(tmp[elm[2] - 1]);
});
return res;
}
10 changes: 10 additions & 0 deletions 도윤/week3/[Lv 2] MakeMinimum.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Lv 2. 최솟값 만들기 - 연습문제
function solution(A, B) {
let answer = 0;
A.sort((a, b) => b - a);
B.sort((a, b) => a - b);
for (let i = 0; i < A.length; i++) {
answer += A[i] * B[i];
}
return answer;
}
12 changes: 12 additions & 0 deletions 도윤/week4/[Lv 1] 2016.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//Lv 1. 2016년 - 연습문제
function solution(a, b) {
const days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
const lastDay = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
let dayCnt = 0;
let daysIdx = 5; //1월 1일이 금요일이기 때문에 금요일 idx부터 시작

for (let i = 1; i <= a; i++) {
i === a ? (dayCnt += b) : (dayCnt += lastDay[i - 1]);
}
return days[(dayCnt + daysIdx - 1) % 7];
}
20 changes: 20 additions & 0 deletions 도윤/week4/[Lv 1] Fruits.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Lv 1. 과일장수 - 연습문제
function solution(k, m, score) {
let box = [];
let price = 0,
answer = 0;

if (score.length < m) {
return 0;
}

score.sort((a, b) => a - b);

while (score.length >= m) {
box = score.splice(score.length - m, m);
price = m * box[0];
answer += price;
}

return answer;
}
24 changes: 24 additions & 0 deletions 도윤/week4/[Lv 1] SecretMap.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/* Lv 1. [1차] 비밀지도 - 2018 KAKAO BLIND RECRUITMENT
배열 속 주어진 수를 모두 2진수로 변환
변환한 2진수 중 모두 0일 때만 0 -> 공백 (하나라도 1이면 벽'#' 출력)
*/
function solution(n, arr1, arr2) {
let binary1 = [],
binary2 = [];
let answer = "";
let res = [];
arr1.forEach((elm) => binary1.push(elm.toString(2).padStart(n, 0)));
arr2.forEach((elm) => binary2.push(elm.toString(2).padStart(n, 0)));
for (let i = 0; i < n; i++) {
answer = "";
for (let j = 0; j < n; j++) {
if (binary1[i][j] === "0" && binary2[i][j] === "0") {
answer += " ";
} else {
answer += "#";
}
}
res.push(answer);
}
return res;
}
24 changes: 24 additions & 0 deletions 도윤/week4/[Lv 1] SplitString.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// Lv 1. 문자열 나누기 - 연습문제
function solution(s) {
let curChar = "";
let same = 0,
diff = 0,
cnt = 0;

for (let c of s) {
curChar === "" ? (curChar = c) : null;
curChar === c ? same++ : diff++;

if (same === diff) {
cnt++;
same = diff = 0;
curChar = "";
}
}

if (curChar.length > 0) {
cnt++;
}

return cnt;
}
25 changes: 25 additions & 0 deletions 도윤/week4/[Lv 2] ExpressNumber.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Lv 2. 숫자의 표현 - 연습문제

// 나의 풀이 (효율성 겁사 통과 X)
function solution(n) {
let cnt = 0;
for (let i = 1; i <= n; i++) {
let sum = 0;
for (let j = i; j <= n; j++) {
sum += j;
if (sum >= n && sum === n) {
cnt++;
}
}
}
return cnt;
}

/* 참고할 풀이 : 주어진 자연수를 연속되는 자연수들의 합으로 표현할 수 있는 방법의 수는 주어진 자연수의 약수 중에서 홀수인 수의 개수와 같다 */
function solution(n) {
let cnt = 0;
for (let i = 1; i <= n; i++) {
n % i === 0 && i % 2 === 1 ? cnt++ : null;
}
return cnt;
}
15 changes: 15 additions & 0 deletions 도윤/week4/[Lv 2]BinaryConversion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//Lv 2. 이진 변환 반복하기 - 월간 코드 챌린지 시즌1
function solution(s) {
let len = 0,
removed = 0,
times = 0;

while (s.length > 1) {
len = s.length;
s = s.split("0").join("");
removed += len - s.length;
times++;
s = s.length.toString(2);
}
return [times, removed];
}
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;
}