Study with me/프로그래머스 L0 마스터하기

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

외계나무 2024. 1. 16. 12:57

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

Brute-force로 하면 이중 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++) {
                if(i+j <= k)
                    answer += board[i][j];
            }
        }
        return answer;
    }
}

 

이중 Stream으로 풀었을 때

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)
                	.map(i -> IntStream.range(0, board[i].length)
                			.filter(j -> j <= k - i)
                            		.map(j -> board[i][j])
                                    	.sum())
                    	.sum();
    }
}
import java.util.stream.IntStream;

class Solution {
    public int solution(int[][] board, int k) {
        return IntStream.range(0, board.length)
                    .map(i -> IntStream.rangeClosed(0, Math.min(board[i].length - 1, k - i))
                                .map(j -> board[i][j])
                                .sum())
                    .sum();
    }
}