프로그래머스 n^2 배열 자르기 (JS)

c_yj·2023년 5월 20일
0

문제 설명

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.
1. n행 n열 크기의 비어있는 2차원 배열을 만듭니다.
2. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
3. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다.
4. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.
5. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다.

정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ n ≤ 107
  • 0 ≤ left ≤ right < n2
  • right - left < 105

입출력 예

내풀이

x좌표와 y좌표를 비교해서 큰값이 들어가면된다
x는
1, 2, 3
1, 2, 3
1, 2, 3
y는
1, 1, 1
2, 2, 2
3, 3, 3
이런식이라 둘의 값을 비교해서 큰값을 넣으면 된다
인덱스값%n은 1,2,3 1,2,3 1,2,3 이런식으로 나오고
Math.floor(인덱스값/n) 은 1,1,1 2,2,2 3,3,3 이런식으로 나온다

const solution = (n, left, right) => {
  const answer = [];
	
  // i % n 은 x좌표
  // Math.floor(i/n) 은 y좌표
  // 0부터 시작하는게 아니라 1부터 시작해서 +1을 해준다
  for(let i=left; i<=right; i++){
    answer.push(Math.max(i%n, Math.floor(i/n)) + 1)
  }

  return answer
};
profile
FrontEnd Developer

0개의 댓글