[코딩테스트] 프로그래머스 - n^2 배열 자르기(Java)

proman·2022년 9월 17일
0

Coding-Test

목록 보기
13/21
post-thumbnail

🤕 설명

레벨: 2
언어: 자바(Java)

🤡 느낀점

해당 문제는 2차원배열에서 i or j 값이 해당값일시 그값은 배열에 대입후
1차원배열로 변환한 다음에 주어진 범위의 배열값을 도출하는 문제입니다..

배열을 만들고 해당값을 도출하면 시간초과가 되어서
해당문제를 접근할때는 해당범위를 이용해서 그값을 역으로 도출하는식으로 가야됩니다.

  1. 저는 그래서 left, right 범위를 루프로 돌리면서
  2. 현재 값이 2차원배열로 표현식 x, y 값을 구하고
  3. 둘중의 큰값인 경우가 해당값으로 대입되니 그값을 도출하는 식으로 변경 및 반환

이런 방식으로 풀었습니다.

좋아요 가장많이 받은코드는 stream 이용했는데 쩝 생각해보니
stream으로 하면 더 간결하겠다는 생각이 들었습니다 ㅎㅎㅎ

🐕 내가 작성한 코드

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

🐼 가장 좋아요 많이받은 코드

import java.util.Arrays;
import java.util.stream.LongStream;

class Solution {
    public int[] solution(int n, long left, long right) {
        return LongStream.rangeClosed(left, right).mapToInt(value -> (int) (Math.max(value / n, value % n) + 1)).toArray();
    }
}

0개의 댓글