Algorithm

[프로그래머스/JavaScript] Lv.2 n^2 배열 자르기

cob 2023. 9. 23. 19:58

https://school.programmers.co.kr/learn/courses/30/lessons/87390#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 


 문제 풀이

배열을 사용할 경우 메모리 효율성 문제(core dumped)가 발생하므로, 좌표 값을 구하는 공식을 사용하여 좌표를 구하고 x, y좌표 중 큰 값을 해당 좌표의 값으로 answer에 push 한다.

좌표

2차원 배열의 x좌표는 i / n의 몫에 해당하고, y좌표는 나머지에 해당한다.
function solution(n, left, right) {
    var answer = [];
    var q = 0; // 몫
    var r = 0; // 나머지
    
    /*
     * 1) 2차원 배열의 좌표 x, y 중 큰 값 + 1 이 해당 좌표의 값에 해당한다.
     *  arr[x][y] = Math.max(x+1, y+1)
     *  left ~ right까지의 길이 만큼 반복한다.
     */
    for (var i = left; i <= right; i++) {
        // 2) x좌표를 구하는 공식(몫)
        q = Math.floor(i / n);
        
        // 3) y좌표를 구하는 공식(나머지)
        r = i % n;
        
        // 4) 큰 값이 좌표의 값으로 answer에 push
        answer.push(Math.max(q+1, r+1));
    }
    return answer;
}

 

 

반응형