코린이의 소소한 공부노트

[LeetCode/Easy] 2363. Merge Similar Items 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2363. Merge Similar Items

무지맘 2023. 5. 2. 14:57

1. Input

1) int[][] items1

2) int[][] items2

 

2. Output

1) item별로 총합 무게가 정리된 리스트를 반환

- items[i][0] = i번째 물건의 가치

- items[i][1] = i번째 물건의 무게

- 반환되는 리스트는 가치를 기준으로 오름차순으로 정렬해야 한다.

 

3. Constraint

1) 1 <= items1.length, items2.length <= 1000

2) items1[i].length == items2[i].length == 2

3) 1 <= value_i, weight_i <= 1000

4) items1items2 각 배열에는 중복되는 가치는 없다.

 

4. Example

Input: items1 = [[1,1],[4,5],[3,8]], items2 = [[3,1],[1,5]] -> Output: [[1,6],[3,9],[4,5]]

- 가치가 1인 물건의 무게 = 1+5=6

- 가치가 3인 물건의 무게 = 8+1=9

- 가치가 4인 물건의 무게 = 5

 

5. Code

1) 첫 코드(2023/05/02)

class Solution {
    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
        List<List<Integer>> ret = new ArrayList<List<Integer>>();
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i=0 ; i<items1.length ; i++)
            map.put(items1[i][0], map.getOrDefault(items1[i][0],0)+items1[i][1]);
        for(int i=0 ; i<items2.length ; i++)
            map.put(items2[i][0], map.getOrDefault(items2[i][0],0)+items2[i][1]);
        ArrayList<Integer> key = new ArrayList<>(map.keySet());
        key.sort(Comparator.naturalOrder());
        for(int k : key){
            List<Integer> list = new ArrayList<>();
            list.add(k); list.add(map.get(k));
            ret.add(list);
        }            
        return ret;
    }
}