프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 특별한 이차원 배열2(Java)

Sigfriede 2023. 5. 14. 01:00

  문제 설명

  n x 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의 원소의 길이는 같습니다.

 

  입출력 예

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[i].length; j++) {
                if (arr[i][j] != arr[j][i]) {
                    answer = 0;
                    break;
                }
            }
        }
        return answer;
    }
}

  바깥 for문이 arr의 길이만큼 순회합니다. 이는 행이 될 것입니다. 안쪽 for문이 arr의 i번째 원소의 길이만큼 순회합니다. 이는 열이 될 것입니다. 만약 arr[i][j]번째 원소와 arr[j][i]번째 원소가 같지 않다면 answer에 0을 할당하고 break문으로 for문을 빠져나옵니다. 대신 answer의 초기값이었던 0을 1로 변경해야 합니다.

  이 코드는 초기값을 1로 하여 arr의 각 원소를 비교하고, 조건에 해당하지 않는 원소가 있다면 반환값을 0으로 바꾼 뒤 코드를 종료하는 것입니다. 하나라도 해당하지 않는 것이 있다면 조건이 성립하지 않기 때문입니다.