n^2 배열 자르기

문제


문제 풀이

먼저 문제에서 원하는 2차원 배열의 모양을 만들어야 한다. 해당 모양은 아래와 같다. 

안에 있는 값들은 column과 row 값에서 더 큰 값이 들어가는 것이다. 

이렇게 만들어진 배열을 1차원 배열로 다시 바꾸어 보자

보기 쉽게 2차원 배열였을 때의 row와 column값을 같이 입력 해두었다. 

 

이렇게 만들어진 배열을 보고 원하는 인덱스에 있을 때의 값에 대한 규칙을 찾으면 아래와 같다. 

  • row = index / n  <-- 일정한 index마다 증가한다
  • column = index % n <-- 수가 반복되고 있다.

이 방식으로 문제를 해결하면 답은 아래와 같다. 


나의 답안

public static int[] solution(int n, long left, long right) {
    int[] answer = new int[(int) (right - left) + 1];

    for (long i = left; i <= right; i++) {
        long row = i / n;
        long col = i % n;
        answer[(int) (i - left)] = (int) Math.max(row, col) + 1;
    }

    return answer;
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

[1차] 뉴스 클러스터링  (0) 2023.04.03
연속 부분 수열 합의 개수  (0) 2023.04.03
튜플  (0) 2023.04.02
행렬의 곱셈  (0) 2023.04.02
[1차] 캐시  (0) 2023.04.01