Menu
Coddy logo textTech

주요 2차원 배열 패턴

Coddy JavaScript 여정의 논리 & 흐름 섹션에 포함된 레슨 — 65개 중 13번째.

2차원 배열을 다룰 때 특정 패턴이 자주 나타납니다. 이러한 패턴을 인식하면 문제를 더 효율적으로 해결하는 데 도움이 될 수 있습니다. 다음은 몇 가지 일반적인 패턴입니다:

대각선 순회

행 인덱스와 열 인덱스가 같은 요소(matrix[i][i])에 접근하면 주 대각선을 얻을 수 있습니다. 부 대각선의 경우, 행과 열 인덱스의 합이 배열 크기에서 1을 뺀 값(matrix[i][size - 1 - i])과 같습니다.

예를 들어:

1  2  3
4  5  6
7  8  9

주 대각선 (matrix[i][i]) 순회: 1, 5, 9
부 대각선 (matrix[i][size - 1 - i]) 순회: 3, 5, 7

테두리 순회

테두리 요소를 순회하려면, 다른 인덱스를 반복하는 동안 하나의 인덱스를 고정(0 또는 size - 1)된 상태로 유지합니다.

상단 테두리에 접근하려면 행 인덱스를 0으로 고정한 상태에서 열을 반복합니다.

예를 들어:

1  2  3  4
5  6  7  8
9 10 11 12

테두리 요소: 1, 2, 3, 4, 8, 12, 11, 10, 9, 5 (6과 7을 제외한 모든 요소)

challenge icon

챌린지

쉬움

정수형 정사각 2차원 배열(matrix)을 입력으로 받아 다음 패턴을 출력하는 printPatterns라는 이름의 함수를 작성하세요:

  1. Main Diagonal: 행 인덱스와 열 인덱스가 같은 모든 요소를 출력합니다.
  2. Anti-Diagonal: 행 인덱스와 열 인덱스의 합이 행렬 크기에서 1을 뺀 값과 같은 모든 요소를 출력합니다.
  3. Borders: 행렬의 위쪽(top), 아래쪽(bottom), 왼쪽(left), 오른쪽(right) 테두리 요소를 출력합니다.

출력 결과는 다음과 같아야 합니다:

Main Diagonal: 1 6 11 16 
Anti-Diagonal: 4 7 10 13 
Top Border: 1 2 3 4 
Bottom Border: 13 14 15 16 
Left Border: 1 5 9 13 
Right Border: 4 8 12 16

치트 시트

일반적인 2차원 배열 순회 패턴:

대각선 순회

주 대각선: matrix[i][i] (행 인덱스와 열 인덱스가 같음)

부 대각선: matrix[i][size - 1 - i] (행과 열 인덱스의 합이 size - 1과 같음)

1  2  3
4  5  6
7  8  9

주 대각선: 1, 5, 9
부 대각선: 3, 5, 7

테두리 순회

다른 인덱스를 반복하는 동안 하나의 인덱스를 고정(0 또는 size - 1)으로 유지합니다:

  • 상단 테두리: 행 인덱스 = 0, 열 반복
  • 하단 테두리: 행 인덱스 = size - 1, 열 반복
  • 좌측 테두리: 열 인덱스 = 0, 행 반복
  • 우측 테두리: 열 인덱스 = size - 1, 행 반복

직접 해보기

function printPatterns(matrix) {
    let mainDiagonal = []
    // TODO: 구현하기
    console.log("Main Diagonal:", mainDiagonal.join(" "));
    
    let antiDiagonal = [];
    // TODO: 구현하기
    console.log("Anti-Diagonal:", antiDiagonal.join(" "));
    
    let topBorder = [];
    // TODO: 구현하기
    console.log("Top Border:", topBorder.join(" "));
    
    let bottomBorder = [];
    // TODO: 구현하기
    console.log("Bottom Border:", bottomBorder.join(" "));
    
    let leftBorder = [];
    // TODO: 구현하기
    console.log("Left Border:", leftBorder.join(" "));
    
    let rightBorder = [];
    // TODO: 구현하기
    console.log("Right Border:", rightBorder.join(" "));
}
// 함수 외부에는 아무것도 작성하지 마세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 & 흐름의 모든 레슨