Programmers n^2 배열 자르기, Javascript

cptkuk91·2022년 10월 7일
1

Algorithm

목록 보기
109/161

문제

https://school.programmers.co.kr/learn/courses/30/lessons/87390?language=javascript

코드

function solution(n, left, right) {
	let result = [];
    
    while(left <= right){
    	result.push(Math.max(Math.floor(left / n), left++ % n) + 1);
    }
    
    return result;
}

코드 풀이

n은 3, left는 2, right는 5로 예를 들겠습니다.
123223333 입니다. (보기 쉽게 만들기 위해서 [1,2,3,2,2,3,3,3,3])

[3,2,2,3]는 left 2, right 5까지의 값입니다.
이를 알기 위해서는 사진 속 배열값을 체크했을 때 (r,c)에 들어가는 숫자값은 Math.max(Math.floor(left / n), left++ % n) + 1); 을 통해 구할 수 있습니다.
(아시겠지만, left++ 한 이유는 while문 돌리기 위해서..)
[3,2,2,3]에 대한 좌표를 구하기 위해서 r = Math.floor(left / n) c = left % n 을 실시했습니다.

계산을 직접 돌려보면 Math.max(Math.floor(2 / 3), 2 % 3) + 1);
(0, 2)가 Math.max로 인해 2만 출력했고 2라는 값에 1을 더해 result에 push합니다.
result = [3];
left++했기 때문에 left는 이제 3입니다.
Math.max(Math.floor(3/3), 3 % 3) + 1);
(1, 0)가 나왔고 Math.max로 1만 출력합니다. 마지막 +1로 인해 2가됐고 result에 push합니다.
result = [3, 2];

위와 같이 진행하면 쉽게 해결할 수 있습니다.

하지만 위 r,c 구하는 방법 조차 몰랐던 저는.. 검색을 통해 해결했습니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글