[알고리즘문제풀기] 이차원 배열 대각선 순회하기

silver's avatar
Apr 09, 2025
[알고리즘문제풀기] 이차원 배열 대각선 순회하기

문제

내가 작성한 정답

2중 for

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[0].length;j++){ // 삼항연산자 // answer += (i+j<=k)?board[i][j]:0; if(i+j<=k) answer += board[i][j]; } } return answer; } }

stream

import java.util.stream.*; class Solution { public int solution(int[][] board, int k) { return IntStream.range(0,board.length) .flatMap(i->IntStream.range(0,board[0].length) .filter(j->i+j<=k) .map(j->board[i][j])) .sum(); } }
💡
  • 2차원 배열을 스트림으로 던지면 스트림에서 각 행이 1차원 배열을 가지는 요소들로 변환된다.
  • flatMap 변환 (Mapping): 스트림의 각 요소를 다른 스트림으로 변환 평탄화 (Flattening): 변환된 모든 스트림을 하나의 스트림으로 합친다.

다른 사람들의 정답

import java.util.stream.IntStream; class Solution { public static int solution(int[][] board, int k) { return IntStream.range(0, board.length) .filter(i -> i <= k) // 각 행(i)에 대해 열 인덱스(j) 스트림 생성 및 계산 .map(i -> { return IntStream.range(0, board[i].length) .filter(j -> j <= k - i) // board[i][j] 값으로 매핑: 선택된 열 인덱스 j에 해당하는 board[i][j] 값을 스트림 요소로 변환 .map(j -> board[i][j]) // 해당 행(i)의 합 계산: 필터링 및 매핑된 요소들의 합을 계산 .sum(); }) //모든 행에 대한 합 계산: 각 행의 합들을 모두 더하여 최종 결과 반환 .sum(); } }
Share article

silver