본문 바로가기

알고리즘/프로그래머스

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

예시 1번은 좌표료 표현하면 다음과 같이 표현할 수 있다.

 

 

여기서 규칙을 찾을 수 있다.

행과 열의 값중 최대 값 + 1이 해당 칸에 있는 수이다.

 

예를 들자면 (1, 2)에서 가장 큰 값은 2이고, 여기에 1을 더하면 3

 

그렇다면 공식을 다음과 같이 세울 수 있다.

a = 행 / n

b = 열 % n

a, b 중 최대값 + 1

 

코드

더보기
더보기
class Solution {
    public int[] solution(int n, long left, long right) {
        int[] answer = new int[(int)(right - left + 1)];
        int division = 0, remain = 0;
        int answerIndex = 0;
        
        while(left <= right) {
            division = (int)(left / n);
            remain = (int)(left % n);
            left++;
            answer[answerIndex++] = Math.max(division, remain) + 1;
        }
        return answer;
    }
}

 

결과