[Java] 특별한 이차원 배열1

2025. 10. 14. 18:45알고리즘

728x90
반응형

문제 설명

정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.

  • arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.

내코드

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        for(int i=0; i<n; i++){
            for(int j=0; j<n; j++) {
                answer[i][j] = i == j ? 1 : 0;
            }
        }
        return answer;
    }
}

답은 맞았지만 정말 기본적인 부분을 놓치고 있었음

Java에서 int[]나 int[][] 같은 기본형 배열은 자동으로 0으로 초기화 

즉 new int[5] 는 {0,0,0,0,0}로 셋팅이 된다. 그렇다면 for문을 1번만 돌려도 됬었다는 얘기

내 코드에서는 else 분기 로직으로 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;
    }
}

[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
  • 배열의 기본값 0이 이미 있기 때문에 1만 할당

 

추가적으로 반대 대각선(↙) 으로 바꿔도 보았다.

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        for(int i=0; i<n; i++){
            answer[i][n-1-i] = 1; // 반대 대각선에만 1
        }
        return answer;
    }
}

0 0 0 1
0 0 1 0
0 1 0 0
1 0 0 0
  • i + j  == n - 1 조건을 만족하는 위치가 반대 대각선
728x90
반응형

'알고리즘' 카테고리의 다른 글

[Java] 프로그래머스 햄버거 만들기  (0) 2025.11.04
[Java] 프로그래머스 둘만의 암호  (0) 2025.11.02
[Java] 프로그래머스 숫자 짝꿍  (0) 2025.11.01
[Java] 덧칠하기  (0) 2025.10.19
[Java] 배열 만들기 4  (0) 2025.10.15