프로그래머스 이차원 배열 대각선 순회하기

KIMYEONGJUN·2026년 8월 18일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

2차원 정수 배열 board와 정수 k가 주어집니다.
i + j <= k를 만족하는 모든 (i, j)에 대한 board[i][j]의 합을 return 하는 solution 함수를 완성해 주세요.

내가 이 문제를 보고 생각해본 부분

solution 메서드는 먼저 배열의 행 수와 열 수를 각각 rows와 cols에 저장한다.
두 개의 중첩된 for문으로 배열을 전부 순회하면서 각 위치 (i, j)를 살핀다.
조건문 if (i + j <= k)를 통해 해당 위치가 조건을 만족하는지 확인한다.
조건에 맞는 원소 board[i][j]는 answer 변수에 누적하여 더한다.
반복이 끝나면 조건을 만족한 모든 배열 원소의 합인 answer를 반환한다.
main 메서드에서는 예시 배열과 k=2를 설정하여 solution을 호출하고, 결과를 출력한다.
예상 출력 값은 8로, 이는 i+j가 2 이하인 위치 원소들의 합과 일치한다.

코드로 구현

class Solution {
    public int solution(int[][] board, int k) {
        int answer = 0;
        int rows = board.length;
        int cols = board[0].length;

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (i + j <= k) {
                    answer += board[i][j];
                }
            }
        }
        return answer;
    }
}

프로그래머스 코드

package programmers.programmers2;

// 프로그래머스 이차원 배열 대각선 순회하기
public class Main116 {
    public static int solution(int[][] board, int k) {
        int answer = 0;
        int rows = board.length;
        int cols = board[0].length;

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (i + j <= k) {
                    answer += board[i][j];
                }
            }
        }
        return answer;
    }

    // main 메서드에서 간단한 테스트 실행
    public static void main(String[] args) {
        int[][] board = {
                {0, 1, 2},
                {1, 2, 3},
                {2, 3, 4},
                {3, 4, 5}
        };
        int k = 2;
        int result = solution(board, k);
        System.out.println(result);
        // 예상 출력: 8
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글