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

윤준혁·2024년 4월 6일

입출력 예는 애니메이션으로 되어있으니 이해가 힘들면 들어가서 보는걸 추천드립니다
https://school.programmers.co.kr/learn/courses/30/lessons/87390

나의 풀이

class Solution {
    public int[] solution(int n, long left, long right) {
        int[] answer = new int[(int)(right - left + 1)];
        
        for (long i = left; i <= right; i++) {
            int row = (int) (i / n); // 1
            int col = (int) (i % n);
            
            int value = Math.max(row, col) + 1; // 2
            
            answer[(int) (i - left)] = value; // 3
        }
        
        return answer;
    }
}

과정

  1. i에 n을 나눈 값이 행이 되고, i에 n을 나눈 나머지가 열이 된다
  2. 두 값중 더 큰 값에 1을 더한 값이 value가 된다
  3. value를 answer에 순서대로 넣는다

다른 사람 풀이

import java.util.*;

class Solution {
    public int[] solution(int n, long left, long right) {
        List<Integer> ansList = new ArrayList<>();
        int leftInt = (int)left;
        int rightInt = (int)right;

        for(long i = left; i <= right; i++){
            if(i / n <= i % n)
                ansList.add((int)(i % n) + 1);
            else
                ansList.add((int)(i / n) + 1);
        }

        int[] answer = new int[ansList.size()];

        for(int i = 0; i < answer.length; i++)
            answer[i] = ansList.get(i);

        return answer;
    }
}

0개의 댓글