프로그래머스 87390번 문제 "n^2 배열 자르기" Lv.2 - 파이썬, 자바
[프로그래머스] n^2 배열 자르기 Lv.2 - [파이썬/python] [자바/java]
💻 문제 설명
정수 n
, left
, right
가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.
n
행n
열 크기의 비어있는 2차원 배열을 만듭니다.i = 1, 2, 3, ..., n
에 대해서, 다음 과정을 반복합니다.- 1행 1열부터
i
행i
열까지의 영역 내의 모든 빈 칸을 숫자i
로 채웁니다.
- 1행 1열부터
- 1행, 2행, ...,
n
행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. - 새로운 1차원 배열을
arr
이라 할 때,arr[left]
,arr[left+1]
, ...,arr[right]
만 남기고 나머지는 지웁니다.
정수 n
, left
, right
가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.
🚨 제한사항
- 1 ≤
n
≤ 107 - 0 ≤
left
≤right
< n2 right
-left
< 105
!!!정답 주의!!!
🌟 소스 코드
[Python] 파이썬 코드
[Java] 자바 코드
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();
}
}
🏳🌈 테스트 결과
[Python] 파이썬 - 테스트 결과 | [Java] 자바 - 테스트 결과 |
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 야근 지수 - Lv.3 (49) | 2024.01.16 |
---|---|
[프로그래머스] H-Index - Lv.2 (35) | 2024.01.10 |
[프로그래머스] 연속 부분 수열 합의 개수 - Lv.2 (23) | 2024.01.04 |
[프로그래머스] 점프와 순간 이동 - Lv.2 (22) | 2024.01.02 |
[프로그래머스] 데이터 분석 - [PCCE 기출문제] 10번 (20) | 2023.12.12 |