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

jonghyukLee·2023년 4월 14일
0

이번에 풀어본 문제는
프로그래머스 n^2 배열 자르기 입니다.

📕 문제 링크

❗️코드

class Solution {
    public int[] solution(int n, long left, long right) {
        int[] answer = new int[(int)(right - left) + 1];
        int idx = 0;
        for (long i = left; i <= right; i++) {
            long r = i / n;
            long c = i % n;
            answer[idx++] = (int)(Math.max(r, c) + 1);
        }
        return answer;
    }
}

📝 풀이

주어진 규칙에 맞는 배열을 완성시키고, 행별로 잘라서 일차원 배열로 이어붙였을 때, left 부터 right 인덱스까지의 배열을 반환하는 문제입니다.
문제 그대로 구현했으나, StringBuilder로 완성된 문자열을 잘라내는 과정에서 left와 right의 자료형이 long인것을 확인했고, 다른 방법으로 풀어야 했습니다.
다른 풀이법을 참고해보니 배열에서 규칙을 발견할 수 있었습니다.
n^2 배열을 map이라 했을 때, i번째 수는 map[i / n][i % n]에 존재하게 되고, 값은 row, column중에서 큰 값(인덱스) 에 1을 더해주면 됩니다.
규칙을 찾기가 쉽지는 않았을 것 같네요..

profile
머무르지 않기!

0개의 댓글