문제
내가 작성한 정답
// int 배열은 생성 시 0이 기본값으로 할당된다!!!
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i=0; i<n; i++){
answer[i][i] = 1;
}
return answer;
}
}
// 그래도 0 할당하는 코드 추가
import java.util.Arrays;
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i=0; i<n; i++){
Arrays.fill(answer[i],0);
answer[i][i] = 1;
}
return answer;
}
}다른 사람들의 정답
import java.util.stream.IntStream;
class Solution {
public int[][] solution(int n) {
return IntStream.range(0, n).mapToObj(i -> IntStream.range(0, n).map(j -> j == i ? 1 : 0).toArray()).toArray(int[][]::new);
}
}
import java.util.*;
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
// Arrays.setAll을 이용해 answer 배열의 각 인덱스(행)마다 람다 함수를 실행
Arrays.setAll(answer, i -> {
int[] array = answer[i]; // 현재 인덱스 i에 해당하는 1차원 배열(행)을 가져옴
array[i] = 1; // 해당 행의 대각선 위치에 1을 할당 (i번째 열)
return array; // 수정된 배열을 반환하여 answer[i]에 저장
});
return answer; // 반환: 대각선 원소만 1이고 나머지는 기본값 0인 2차원 배열
}
}
Share article