멀리 뛰기

function solution(n = 3) {
if (n === 1) {
return 1;
} else if (n === 2) {
return 2;
}
let dp = new Array(n);
dp[1] = 1;
dp[2] = 2;
for (let i = 3; i <= n; i++) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 1234567;
}
return dp[n]
}
최소공배수

const gcd = (a, b) => {
if (b === 0) {
return a;
} else if (a % b === 0) {
return b;
}
return gcd(b, a % b);
};
const solution = (arr) => {
let answer = 1;
for (let index = 0; index < arr.length; index++) {
answer = (arr[index] * answer) / gcd(arr[index], answer);
}
return answer;
};
영어 끝말잇기
function solution(
n = 3,
words = [
'tank',
'kick',
'know',
'wheel',
'land',
'dream',
'mother',
'robot',
'tank',
]
) {
let answer = [0, 0];
for (let i = 0; i < words.length - 1; i++) {
for (let j = i + 1; j < words.length; j++) {
if (words[i] === words[j]) {
words[j] = 0;
}
}
}
for (let index = 0; index < words.length; index++) {
if (
index > 0 &&
words[index - 1][words[index-1].length - 1] !== words[index][0]
) {
answer[0] = (index % n) + 1;
answer[1] = Math.ceil((index + 1) / n);
break;
}
if (words[index] === 0) {
answer[0] = (index % n) + 1;
answer[1] = Math.ceil((index + 1) / n);
break;
}
}
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;
}