Code Etc/코딩테스트

n^2 배열 자르기 - 프로그래머스 Lv2 / JS

CoderHan 2022. 12. 26. 22:28
반응형

주어진 문제는 이렇다

n, left, right가 주어진다.

 

n이 2면

[1,2]
[2,2]

n이 3이면

[1,2,3]

[2.2.3]

[3.3.3]

이런 배열이 있는데 이 배열을 하나로 합쳐서 left부터 right까지 배열을 얻으면 된다.

ex)3, 1,4라면

[1,2,3][2,2,3][3,3,3]에서 1번째부터 4번째까지 [1,2,3,2]가 정답이다.

 

이걸 어떻게 풀어나갈까?

2차원 배열이므로 (x,y)라고하면 x,y의 값은 Math.max(x,y)+1이 된다.

 

for(i = left ; i <= right ; i++)라고 한다면

x값은 parseInt(i/n), y는 i%n으로 나타낼 수 있다.

그럼 수식을 완성하면

 

const answer = [];

for(let i = left ; i <= right ; i++) {
ansewr.push(Math.Max(parseInt(i/n),i%n)+1) // parseInt(i/n) = x , i%n = y
}
return answer

이렇게 표현할 수 있다.

 

모든 배열을 만들고 난 뒤 계산하려고 하면 메모리 overflow가 발생하니

주어진 left와 right만의 값을 얻어야하며 동시에 규칙을 찾는 게 중요한 문제였다.

반응형