본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 이차원 배열 대각선 순회하기

by nam_ji 2024. 6. 9.

이차원 배열 대각선 순회하기

문제

  • 이차원 정수 배열 board와 정수 k가 매개변수로 주어집니다.
  • i + j <= k를 만족하는 모든 (i, j)에 대한
  • board[i][j]의 합을 출력하는 문제입니다.
  • board k result
    [[0, 1, 2],[1, 2, 3],[2, 3, 4],[3, 4, 5]] 2 8
  • i \ j 0 1 2
    0 0 1 2
    1 1 2 3
    2 2 3 4
    3 3 4 5


테스트 (인텔리제이)

  • 2차원 배열을 추출하기 위해 2중 for문을 사용합니다
  • 첫 번째 for문은 첫 번째 원소를 나타내고
  • 두 번쨰 for문은 첫 번째 원소의 원소들을 추출하기 위함입니다.
  • 2중 for문 안에 if 문을 통해 board의 자리를 나타내는 i와 j를 더하여 k보다 작거나 같으면 그 자리의 원소를 다 더하게 해주면 됩니다.
public class 이차원_배열_대각선_순회하기 {
  public static void main(String[] args) {
    /*
    이차원 정수 배열 board와 정수 k가 매개변수로 주어집니다.
    i + j <= k를 만족하는 모든 (i, j)에 대한
    board[i][j]의 합을 출력하는 문제입니다.
    board	                                      k	  result
    [[0, 1, 2],[1, 2, 3],[2, 3, 4],[3, 4, 5]]	  2	  8
     */

    int[][] board = {{0, 1, 2}, {1, 2, 3}, {2, 3, 4}, {3, 4, 5}};
    int k = 2;
    int answer = 0;
    for (int i = 0; i < board.length; i++) {
      for (int j = 0; j < board[i].length; j++) {
        if (board[i][j] <= k) {
          answer += board[i][j];
        }
      }
    }
    System.out.println(answer);
  }
}

프로그래머스 코드

class Solution {
    public int solution(int[][] board, int k) {
        int answer = 0;
        
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                if (i + j <= k) {
                    answer += board[i][j];
                }
            }
        }
        
        return answer;
    }
}