
function solution(answers) {
const a = [1,2,3,4,5];
const b = [2,1,2,3,2,4,2,5];
const c = [3,3,1,1,2,2,4,4,5,5];
let score_a = 0;
let max_a = a.length;
let a_cnt=0;
let b_cnt=0;
let score_b = 0;
let max_b =b.length;
let c_cnt=0;
let score_c = 0;
let max_c = c.length;
answers.forEach((e,i)=>{
if (e === a[i % max_a]) {
++a_cnt;
}
if (e=== b[i % max_b]){
++b_cnt;
}
if(e === c[i % max_c]){
++c_cnt;
}
});
const maxAnswer = Math.max(a_cnt,b_cnt,c_cnt)
let answer = [];
if(a_cnt=== maxAnswer)
answer.push(1)
if(b_cnt === maxAnswer)
answer.push(2)
if(c_cnt === maxAnswer)
answer.push(3)
return answer
}
class Solution {
public List<Integer>solution(int[] answers) {
int [] person1 = {1,2,3,4,5};
int person1_cnt = 0;
int [] person2 = {2,1,2,3,2,,2,5};
int person2_cnt = 0;
int [] person3 = {3,3,1,1,2,2,4,4,5,5};
int person3_cnt = 0;
List<Integer>list = new ArrayList<>();
for (int i = 0; i <answers.length; i++) {
if (answers[i] == person1[i% person1.length]) {
++person1_cnt;
}
if(answers[i] == person2[i % person2.length]){
++person2_cnt;
}
if(answers[i] == person3[i % person3.length]){
++person3_cnt;
}
}
int frist= Math.max(person1_cnt, person2_cnt);
int result = Math.max(frist,person3_cnt);
if (result == person1_cnt) {
list.add(1);
}
if (result == person2_cnt) {
list.add(2);
}
if (result == person3_cnt) {
list.add(3);
}
return list;
}
}
person1.length 여기서 틀림 person[i]가 length 길이 만큼 되면 인덱스가 0이 되게 만들어야 된다. 만약 length-1을 해주게 된다면 다음 인덱스가 1이 된다.


function solution(number, limit, power) {
let answer = 0;
for (let n = 1; n <= number; n++)
{
let count = 0;
for (let j = 1; j * j <= n; j++)
{
if (j * j === n) count++;
else if (n % j === 0) count += 2;
}
if (count > limit) count = power;
answer += count;
}
return answer;
}
기존 메커니즘으로 약수의 개수를 구하면 O(n)의 시간복잡도를 가진다.
제곱근을 활용
만약 n이 1부터 10 이다. 그러면 j는 3까지 돈다. 1, 2, 5, 10 이다. j=1 , j=2 일 때 나머지가 0이 된다. 제곱근 이면 1개 증가 시켜준다.약수 계산하는 것이 좀 어려웠다. 제곱근을 통하여 약수를 구하면 O(log n)의 시간 복잡도가 된다.