코딩테스트/leetcode

99클럽 코테 스터디 26일차 TIL, 배열(Group the People Given the Group Size They Belong To)

feel2 2024. 6. 16. 17:17
반응형

1. 문제 정의

2. 문제 접근

배열을 이용하라고 했지만 나는 map을 이용하여 풀었다.

3. 문제 풀이

  1. Map을 정의한다.
  2. groupSize의 값을 키로 하여, map에 index값을 추가한다.
  3. map의 크기가 groupSize가 되면 ans list 에 추가하고, map을 clear한다.

4. 코드

class Solution {
    public List<List<Integer>> groupThePeople(int[] groupSizes) {
        List<List<Integer>> ans = new ArrayList<>();
        Map<Integer, List<Integer>> map = new HashMap<>();
        int l = groupSizes.length;

        for(int i = 0; i < groupSizes.length; i++) {
            int size = groupSizes[i];
            map.putIfAbsent(size, new ArrayList<>());
            map.get(size).add(i);

            if(map.get(size).size() == size){
                ans.add(new ArrayList<>(map.get(size)));
                map.get(size).clear();
            }
        }

        return ans;
        
    }
}

 

 

5. 회고

처음에 문제를 잘 이해하지 못해서 이해하는데 시간이 좀 걸렸다. 문제를 이해하고 나서 든 생각이 Queue아니면 Map을 활용해야겠다라고 생각이 들었다. 사실 Queue를 활용하든 , Map을 활용하든 정해진 크기만큼 가지고 있다가 비우는것은 같지만 groupSize정보를 같이 들고 있어야 하기 때문에 Map이 더 적합하다고 생각이 들었다. 배열로도 풀 수 있을 것 같은데 잘 생각이 나지 않는다....

 

반응형