스타 수열
Lv. 3
Solution
function createCounter(a: number[]) {
const counter = new Map<number, number>();
a.forEach((num) => {
counter.set(num, (counter.get(num) || 0) + 1);
});
return counter;
}
function createStarSequence(a: number[], num: number) {
let result = 0;
let [start, end] = [0, 1];
while (end < a.length) {
if ((a[start] === num || a[end] === num) && a[start] !== a[end]) {
start = end + 1;
end = start + 1;
result += 1;
} else {
end += 1;
}
}
return result;
}
export function solution(a: number[]) {
const counter = createCounter(a);
let answer = 0;
Array.from(counter.entries()).forEach(([num, numCount]) => {
if (answer < numCount) {
answer = Math.max(answer, createStarSequence(a, num));
}
});
return answer * 2;
}