코린이의 소소한 공부노트

[LeetCode/Easy] 1672. Richest Customer Wealth 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 1672. Richest Customer Wealth

무지맘 2023. 1. 2. 12:59

1. Input

1) 2차원 정수 배열 accounts

- account[i][j]의 값은 i번째 고객의 j번째 은행 예금액이다.

 

2. Output

1) 각 고객마다 은행의 모든 예금액을 합했을 때, 가장 큰 금액을 반환

 

3. Constraint

1) m == accounts.length

2) n == accounts[i].length

3) 1 <= m, n <= 50

4) 1 <= accounts[i][j] <= 100

 

4. Example

Input: accounts = [[1,5],[7,3],[3,5]] -> Output: 10

설명:

- 1번째 고객: 1 + 5 = 6

- 2번째 고객: 7 + 3 = 10

- 3번째 고객: 3 + 5 = 8

- 가장 큰 금액인 10을 반환한다.

 

5. Code

1) 첫 코드(2022/06/02)

import java.util.Arrays;
 
int[] wealth = new int[accounts.length];
for(int i=0 ; i<wealth.length ; i++)
    for(int j=0 ; j<accounts[i].length ; j++)
        wealth[i] += accounts[i][j];

Arrays.sort(wealth);
return wealth[wealth.length-1];

  - 속도는 준수했지만 메모리 사용량이 크다.

2) 다시 풀어본 코드(2023/01/02)

int answer = 0;
for(int i=0 ; i<accounts.length ; i++){
    for(int j=1 ; j<accounts[0].length ; j++){
        accounts[i][0] += accounts[i][j];
    }
    if(accounts[i][0]>answer) answer = accounts[i][0];
}
return answer;

  - 훨씬 빨라지고, 메모리 사용량도 대폭 줄였다.