inblog logo
|
silver
    알고리즘문제풀기

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

    silver's avatar
    silver
    Apr 09, 2025
    [알고리즘문제풀기] 이차원 배열 대각선 순회하기
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181829

    내가 작성한 정답

    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

    RSS·Powered by Inblog