코딩테스트연습/[프로그래머스] Java

[프로그래머스] Java 코딩테스트 연습 - 이차원 배열 대각선 순회하기

_꼬마돌 2023. 8. 7. 19:18
반응형

[프로그래머스] Java 코딩테스트 연습 - 이차원 배열 대각선 순회하기

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/181829

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제

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

 

풀이

2차원 배열은 표 형식으로 나타내서 보면 이해가 쉽다.

i \ j  0 1 2
 0    0 2 3
 1    1 2 3
 2    2 3 4
 3    3 4 5

위와 같이 i 행 j 열을 표로 나타내면 한 눈에 보기 좋다. 
먼저 첫 번째 for문에서 행 인덱스 i를 0부터 board 배열의 끝까지 반복하고,
두 번째 for문에서 열 인덱스 j를 0부터 i행의 끝까지 반복한다.  
이렇게 2중 for문을 이용하면 2차원 배열의 모든 원소를 순회할 수 있다. 
if문으로 i + j <= k 조건을 성립할 때 해당 인덱스에 해당하는 값들을 더해 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;
    }
}

 

반응형