프로그래머스 - 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();
}
}
'Study with me > 프로그래머스 L0 마스터하기' 카테고리의 다른 글
프로그래머스 - L0 글자지우기 (0) | 2024.01.18 |
---|---|
프로그래머스 - L0 날짜비교하기 (0) | 2024.01.17 |
프로그래머스 - L0 중복된문자제거 (1) | 2024.01.15 |
프로그래머스 - L0 문자열정렬하기(2) // String ↔ char[] (1) | 2024.01.13 |
프로그래머스 - L0 숫자찾기 (0) | 2024.01.12 |