예상 대진표

function solution(n = 8, a = 4, b = 7) {
let answer = 1;
let arr = new Array(n);
for (let index = 0; index < arr.length; index++) {
arr[index] = index + 1;
}
while (arr.length > 1) {
let tmpArr = [];
for (let index = 0; index < arr.length; index += 2) {
if (
arr[index] !== a &&
arr[index] !== b &&
arr[index + 1] !== a &&
arr[index + 1] !== b
) {
tmpArr.push(arr[index]);
} else if (
(arr[index] === a || arr[index] === b) &&
(arr[index + 1] === a || arr[index + 1] === b)
) {
return answer;
} else if (arr[index] === a || arr[index] === b) {
tmpArr.push(arr[index]);
} else if (arr[index + 1] === a || arr[index + 1] === b) {
tmpArr.push(arr[index + 1]);
}
}
++answer;
arr = tmpArr;
}
return answer;
}
귤고르기

function solution(k = 1, tangerine = [1]) {
let answer = 0;
let map = new Map();
tangerine.forEach((el, i) => {
if (tangerine.indexOf(el) === i) {
map.set(el, 1);
} else if (map.has(el)) {
map.set(el, map.get(el) + 1);
}
});
const values = Array.from(map.values()).sort((a, b) => b - a);
for (let index = 0; index < values.length; index++) {
k -= values[index];
++answer;
if (k <= 0) {
return answer;
}
}
}
연속 부분 수열 합의 개수

function solution(elements = [7, 9, 1, 1, 4]) {
let l = elements.length;
let set = new Set();
for (let index = 0; index < elements.length; index++) {
let v = elements[index];
set.add(v);
for (let j = index + 1; j < index + l; j++) {
v += elements[j % l];
console.log(v);
set.add(v);
}
}
return set.size;
}