프로그래머스 Day 25 이차원 리스트(배열)
정수를 나선형으로 배치하기
💫문제 설명💫
양의 정수 n이 매개변수로 주어집니다.
n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
💫제한사항💫
1 ≤ n ≤ 30
💫입출력 ex💫
n | result |
---|---|
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
문제풀이
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int num = 1;
int top = 0, bottom = n - 1, left = 0, right = n - 1;
while (num <= n * n) {
for (int i = left; i <= right; i++) {
answer[top][i] = num++;
}
top++;
for (int i = top; i <= bottom; i++) {
answer[i][right] = num++;
}
right--;
for (int i = right; i >= left; i--) {
answer[bottom][i] = num++;
}
bottom--;
for (int i = bottom; i >= top; i--) {
answer[i][left] = num++;
}
left++;
}
return answer;
}
}
특별한 이차원 배열 2
💫문제 설명💫
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
💫제한사항💫
1 ≤ arr의 길이 = arr의 원소의 길이 ≤ 100
1 ≤ arr의 원소의 원소 ≤ 1,000
모든 arr의 원소의 길이는 같습니다.
💫입출력 ex💫
arr | result |
---|---|
[[5, 192, 33], [192, 72, 95], [33, 95, 999]] | 1 |
[[19, 498, 258, 587], [63, 93, 7, 754], [258, 7, 1000, 723], [587, 754, 723, 81]] | 0 |
문제풀이
class Solution {
public int solution(int[][] arr) {
int answer = 1;
for(int i = 0; i<arr.length;i++){
for(int j = 0; j<arr.length; j++){
if(arr[i][j]!=arr[j][i]){
answer = 0;
}
}
}
return answer;
}
}
정사각형으로 만들기
💫문제 설명💫
이차원 정수 배열 arr이 매개변수로 주어집니다.
arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고,
열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
💫제한사항💫
1 ≤ arr의 길이 ≤ 100
1 ≤ arr의 원소의 길이 ≤ 100
arr의 모든 원소의 길이는 같습니다.
1 ≤ arr의 원소의 원소 ≤ 1,000
💫입출력 ex💫
arr | result |
---|---|
[[572, 22, 37], [287, 726, 384], [85, 137, 292], [487, 13, 876]] | [[572, 22, 37, 0], [287, 726, 384, 0], [85, 137, 292, 0], [487, 13, 876, 0]] |
[[57, 192, 534, 2], [9, 345, 192, 999]] | [[57, 192, 534, 2], [9, 345, 192, 999], [0, 0, 0, 0], [0, 0, 0, 0]] |
[[1, 2], [3, 4]] | [[1, 2], [3, 4]] |
문제풀이
class Solution {
public int[][] solution(int[][] arr) {
int max = Math.max(arr.length, arr[0].length);
int[][] answer = new int[max][max];
for(int i=0; i < arr.length; i++) {
// (복사할 배열, 시작 위치, 저장 대상, 시작 위치, 복사 개수)
System.arraycopy(arr[i], 0, answer[i], 0, arr[i].length);
}
return answer;
}
}
이차원 배열 대각선 순회하기
💫문제 설명💫
2차원 정수 배열 board와 정수 k가 주어집니다.
i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.
💫제한사항💫
1 ≤ board의 길이 ≤ 100
1 ≤ board[i]의 길이 ≤ 100
1 ≤ board[i][j] ≤ 10,000
모든 board[i]의 길이는 같습니다.
0 ≤ k < board의 길이 + board[i]의 길이
💫입출력 ex💫
board | k | result |
---|---|---|
[[0, 1, 2],[1, 2, 3],[2, 3, 4],[3, 4, 5]] | 2 | 8 |
문제풀이
class Solution {
public int solution(int[][] board, int k) {
int answer = 0;
for(int i=0; i < board.length; i++) {
for(int j=0; j < board[i].length; j++) {
if(i + j <= k) {
answer += board[i][j];
}
}
}
return answer;
}
}
Leave a comment