문제
내가 작성한 정답
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;
}
}
return answer;
}
}다른 사람들의 정답
class Solution {
public static int solution(int[][] board, int k) {
return IntStream.range(0, board.length)
.filter(i -> i <= k)
// map으로 각 i에 대해 내부 IntStream 생성:
.map(i -> IntStream.range(0, board[i].length)
// filter로 j가 k - i 이하인 경우만 필터링 (대각선 이하 영역만 대상)
.filter(j -> j <= k - i)
// map으로 board[i][j] 값을 가져와서 sum()으로 해당 행의 조건에 맞는 열들의 합을 구함
.map(j -> board[i][j])
.sum())
.sum();
// 최종적으로 외부 sum()으로 모든 i에 대해 누적 합산
}
}Share article