본문 바로가기

old/Algorithm Solving

LeetCode 1672. Richest Customer Wealth 자바 문제 풀이

반응형

문제

Richest Customer Wealth - LeetCode

문제 해결 방법

  • 2D어레이를 다루어서 값을 모두 더하고, 그를 이용해서 최적화를 할수 있는가 물어보는 문제이다.
  • 처음에는 간단하게 다 더한 값을 어레이에 저장하고, 그 어레이를 지나며 최대값을 찾는 방식으로 답을 구하였는데, 최적화를 잘하면 굳이 어레이에 값을 저장할 필요가 없이 바로 최대값을 찾으면 된다.
  • 일단 다 짠다음에서야 최적화가 가능하다는것을 깨달았는데, 바로 좋은 알고리즘을 짤수있도록 많이 문제를 풀어봐야 한다.
  • 알고리즘
    • 첫번째 반복문에서 각 어레이를 가져온다
    • 두번쨰 반복문에서 각 어레이의 값을 모두 더한다
    • 두번째 반복문이 끝나면 모두 더한값을 비교하여, 높은 수일 경우 저장한다
    • 저장한 값을 리턴한다.

Github Link

https://github.com/eunhanlee/LeetCode_1672_RichestCustomerWealth_Solution.git

시간복잡도: O(n), 공간복잡도: O(1)

public class Solution {
    /**
     * 고객들 사이에서 최대 재산을 계산합니다.
     *
     * @param accounts 고객들과 그들의 계정의 재산을 나타내는 2차원 배열
     * @return 고객들 사이에서 최대 재산
     */
    public int maximumWealth(int[][] accounts) {
        int max = 0; // 최대 재산을 0으로 초기화합니다.

        for (int[] listOfWealth : accounts) {
            int tempSum = 0; // 각 고객의 임시 합계를 0으로 초기화합니다.

            for (int wealth : listOfWealth) {
                tempSum += wealth; // 각 계정의 재산을 임시 합계에 더합니다.
            }

            max = Math.max(max, tempSum); // 임시 합계가 최대값인 경우 최대 재산을 업데이트합니다.
        }

        return max; 
    }
}
반응형