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만의 값을 얻어야하며 동시에 규칙을 찾는 게 중요한 문제였다.
반응형