두 대각선 합이 같은 격자인지 확인하기
자바스크립트 코딩테스트 문제로 diagonal-check 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.
정사각 격자의 두 대각선 합이 같은지 판별하는 문제입니다.
문제 설명
정수로 이루어진 n x n 정사각 배열 grid가 주어집니다.
왼쪽 위에서 오른쪽 아래로 이어지는 주대각선의 합과,
오른쪽 위에서 왼쪽 아래로 이어지는 반대각선의 합이 서로 같으면 true, 다르면 false를 반환하는 checkEqualDiagonalSums 함수를 작성하세요.
제한사항
grid의 길이는1이상100이하입니다.grid[i]의 길이는 항상grid.length와 같습니다.- 각 원소는
-1,000이상1,000이하의 정수입니다. - 반드시 정사각 배열만 입력으로 주어집니다.
예시
- 입력:
grid = [[7]]→ 출력:true - 입력:
grid = [[1, 2], [3, 1]]→ 출력:false - 입력:
grid = [[2, 0, 2], [1, 5, 1], [2, 0, 2]]→ 출력:true
힌트
- 주대각선의 인덱스는
(0, 0),(1, 1),(2, 2)처럼 늘어납니다. - 반대각선의 인덱스는
(0, n - 1),(1, n - 2)처럼 움직입니다. - 두 합을 따로 구한 뒤 마지막에 비교하면 됩니다.
해설
이 문제는 두 대각선의 위치 규칙만 정확히 잡으면 어렵지 않습니다.
배열 길이를 n이라고 하면
- 주대각선은
grid[i][i] - 반대각선은
grid[i][n - 1 - i]를 더하면 됩니다.
즉, i를 0부터 n - 1까지 한 번 순회하면서
두 합을 동시에 누적한 뒤 마지막에 같은지만 비교하면 됩니다.
예를 들어 [[2, 0, 2], [1, 5, 1], [2, 0, 2]]에서는
- 주대각선 합:
2 + 5 + 2 = 9 - 반대각선 합:
2 + 5 + 2 = 9이므로true입니다.
홀수 크기 배열에서는 가운데 칸이 두 대각선에 모두 포함되지만, 이 문제는 각 대각선의 합을 따로 구해 비교하는 것이므로 가운데 값을 양쪽 합에 한 번씩 넣는 것이 맞습니다.
시간 복잡도는 대각선 원소만 보므로 O(n)입니다.
코드 작성
starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.
JavaScript
에디터 로딩 중...
커스텀 테스트
함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]
아직 실행하지 않았습니다.
실행 결과
아직 실행하지 않았습니다.
예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.
댓글
문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.