코딩테스트

[프로그래머스] n^2 배열 자르기 - Lv.2

pyflu 2024. 1. 7. 03:29

프로그래머스 87390번 문제 "n^2 배열 자르기" Lv.2 - 파이썬, 자바

[프로그래머스] n^2 배열 자르기 Lv.2 - [파이썬/python] [자바/java]

 

 

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


💻 문제 설명

 

정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.

  1. nn열 크기의 비어있는 2차원 배열을 만듭니다.
  2. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다.
    • 1행 1열부터 ii열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다.
  3. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다.
  4. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다.

정수 n, left, right가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.

 


🚨 제한사항

 

  • 1 ≤ n ≤ 107
  • 0 ≤ leftright < n2
  • right - left < 105

 

 




!!!정답 주의!!!




 

 

 


🌟 소스 코드

[Python] 파이썬 코드

프로그래머스-n^2-배열-자르기-파이썬-코드

def solution(n, left, right):
   
    result = []
   
    for i in range(left, right+1):
       
        # left ~ right 사이의 숫자를 n으로 나누면
        # 몫은 y(index) 좌표를
        # 나머지는 x(index) 좌표를 알 수 있다.
        y, x = i//n, i%n
       
        # 넣을 값은 (y,x 좌표중 큰 값) + 1
        # [0][0]=1 [0][1]=2 [0][2]=3 [0][3]=4
        # [1][0]=2 [1][1]=2 [1][2]=3 [1][3]=4
        # [2][0]=3 [2][1]=3 [2][2]=3 [2][3]=4
        # [3][0]=4 [3][1]=4 [3][2]=4 [3][3]=4
        value = max(y,x) + 1
       
        result.append(value)
   
    return result

 

 

 

[Java] 자바 코드

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

import java.util.List;

import java.util.ArrayList;

 

class Solution {

    public int[] solution(int n, long left, long right) {

 

        List<Integer> list = new ArrayList<Integer>();

 

        for(Long i=left; i<=right; i++) {

 

            // left ~ right 사이의 숫자를 n으로 나누면

            // 몫은 y(index) 좌표를

            // 나머지는 x(index) 좌표를 알 수 있다.

            int y = (int)(i/n);

            int x = (int)(i%n);

 

            // 넣을 값은 (y,x 좌표중 큰 값) + 1

            // [0][0]=1 [0][1]=2 [0][2]=3 [0][3]=4

            // [1][0]=2 [1][1]=2 [1][2]=3 [1][3]=4

            // [2][0]=3 [2][1]=3 [2][2]=3 [2][3]=4

            // [3][0]=4 [3][1]=4 [3][2]=4 [3][3]=4

            int value = Math.max(y, x) + 1;

 

            list.add(value);

        }

 

        // ArrayList<Intger>를 int[]로 변환 후 반환하기

        return list.stream().mapToInt(i -> i).toArray();

    }

}

 

 

 

 


🏳‍🌈 테스트 결과

 

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

 

[Python] 파이썬 - 테스트 결과 [Java] 자바 - 테스트 결과
프로그래머스-n^2-배열-자르기-파이썬-테스트-결과
프로그래머스-n^2-배열-자르기-자바-테스트-결과

 

728x90