
내가 생각했을때 문제에서 원하는부분
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
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.