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

수경·2023년 1월 17일
0

problem solving

목록 보기
107/174

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

풀이

  1. n의 범위가 10^7미만, left와 right는 n^2미만
    ➡️ 배열에 직접 저장 ❌
    ➡️ 규칙 찾아야 함

  2. 2차원 배열로 구현했을 경우 아래와 같은 규칙을 가짐

  0 1 2 3
0 1 2 3 4
1 2 2 3 4
2 3 3 3 4
3 4 4 4 4

-> arr[i][j] = max(i, j) + 1
-> arr[0][2] = max(0, 2) + 1 = 3
  1. i = left / n , j = left % n

코드

import java.util.Arrays;

public class ArrayN2 {
	public int[] solution(int n, long left, long right) {
		int[] result = new int[(int)(right - left + 1)];
		int idx = 0;

		while (left <= right) {
			result[idx++] = (int) Math.max(left / n, left % n) + 1;
			left++;
		}
		return result;
	}

	public static void main(String[] args) {
		ArrayN2 arrayN2 = new ArrayN2();
		System.out.println(Arrays.toString(arrayN2.solution(4, 7, 14))); // [4,3,3,3,4,4,4,4]
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글