// x과 y가 곱해져서 n는 경우의 수 
// y는 20 부터시작해서 점차 줄어가고 
// x는 1부터 시작해서 점차 늘어간다

라는 전제를 애초부터 깔고갔었다

function solution(n) { 
    let a = 0;
    for(let x = 1; x <= n; x++) {
        if (x * Math.floor(n/x) === n) {
            a += 1
        }
    }
    return a
}

for문 두번 돌리면 편하겠다 생각했는데 안됨 ㅠ

 

예시로 적혀있는 순서쌍의 조합을 보니 

 

 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 

 

이러한 형식이길래 

어 1에서 2로넘어갈때 보니까 20을 2로 나누면 10 

20을 5로나누면 4 

20을 4로 나누면 5 이런생각이 딱 들어서 n을 x로 나눠야겠다 생각했고 정수로 떨어지지않는부분도 존재하여 Math.floor를 사용하였다.

 

진짜 얻어걸린느낌... ? 

 

원래 이거 못풀겠어서 넘겼었던문제인데 풀어서 재밌다.

function solution(num_list, n) {
    let answer = []  
    let length = num_list.length    
    for(let i = 1; i <= length/n; i++) {
       answer.push(num_list.splice(0, n)) 
    }
    return answer
}

이리저리 만질때 for문안에 num_list 넣으면 splice 땜에 계속 숫자가 줄어드는경우 있어서 따로 length 를 빼두었습니다.

length / n 가 = for문 횟수 = 내부 array 개수 입니다.

splice 하면 num_list의 index 0 부터 n개가 빠져서 answer에 push되고

num_list는 값이 빠진 상태로 유지됩니다.

 

 

하면서 했던 생각... 

 

배열을 끊어야 되는데 index로 끊어야할것같다...

 

index로 끊자니 한번에 끊기지않을것같아서 for 문 돌려야겠다 생각했고 

 

splice 썼다가  안에 값 빠져서 재할당되는거 보고 slice 했다가 index 시작점도 같이 계속 올려줘야해서 아 이건 아닌것같다 싶어 다시 splice 로 돌아옴 for문 돌아가는 횟수만 맞추면 되겠다 싶어서 횟수 맞췄더니 완성 

+ Recent posts