본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 특별한 이차원 배열 1

728x90

코드 힌트

  1. 2차원 배열 생성:
    • 먼저, 주어진 크기 n에 맞는 n x n 크기의 2차원 배열을 생성합니다. 이 배열이 최종적으로 단위 행렬이 될 것입니다.
  2. 반복문을 이용한 주대각선 설정:
    • 두 개의 중첩된 for 루프를 사용하여 배열의 모든 원소를 순회합니다.
    • 바깥쪽 루프는 행을, 안쪽 루프는 열을 나타냅니다.
    • 행과 열의 인덱스가 같은 경우, 즉 i == j일 때, 해당 위치는 주대각선에 해당합니다. 이 위치에 1을 설정합니다.
    • 그 외의 위치는 배열을 생성할 때 기본적으로 0으로 초기화되므로 별도로 설정할 필요가 없습니다.
  3. 결과 반환:
    • 모든 원소를 설정한 후, 생성된 단위 행렬을 반환합니다.

이 코드를 통해 주어진 크기 n에 맞는 단위 행렬을 생성할 수 있습니다. 각 원소가 0으로 초기화된 상태에서 주대각선의 원소만 1로 설정되므로 단위 행렬의 특성을 충족합니다.

코드 최적화

단위 행렬에서 1이 들어가는 위치는 항상 주대각선의 위치(i == j)입니다. 따라서 2중 for문을 사용할 필요 없이, 하나의 for문만으로 주대각선의 위치에 1을 설정할 수 있습니다. 이렇게 하면 코드가 더 간결해지고 효율적으로 됩니다.

 

 


정답은 더보기 클릭

더보기
class Solution {
    public int[][] solution(int n) {
        // n x n 크기의 2차원 배열을 생성
        int[][] result = new int[n][n];
        
        // 각 행과 열을 반복하면서
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                // 행과 열이 같으면 주대각선이므로 1을 대입
                if (i == j) {
                    result[i][j] = 1;
                }
            }
        }
        
        // 생성된 단위 행렬을 반환
        return result;
    }
}

 

 

최적화 해보기

class Solution {
    public int[][] solution(int n) {
        int[][] result = new int[n][n];
        
        for (int i = 0; i < n; i++) {
            result[i][i] = 1;
        }
        
        return result;
    }
}
728x90