LeetCode 문제 풀이

[LeetCode] 904번 Fruit Into Baskets 문제를 풀어보았다. (ft. java)

pantrom 2023. 2. 7. 22:11

2023년 02월 07일 화요일 - 야근시러


오늘 올려볼 문제는 904번 Fruit Into Baskets 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

leetcode 문제 사진

오늘도 LeetCode 사이트 오늘의 문제를 가지고 왔다.

문제 좀더 깔쌈하게 풀 수 있었는데 ㄲㅂ


입력


사진에서도 볼 수 있듯이 int 배열 1개가 입력으로 들어온다.



풀이 및 코드


과일을 따기 시작하면 계속 따야한다.

한 바구니에는 한 종류의 과일만 넣어야하며 바구니는 2개가 있다.

가장 많은 과일을 담을 수 있는 경우의 수를 구하는 문제이다.


오늘은 처음부터 정답을 생각해냈다.

오늘도 윈도우 슬라이딩....


이제 코드를 봐보자!


풀이코드

class Solution {
    public int totalFruit(int[] fruits) {
        int result = 0, diff = 0, index = 0, length = 0;
        var map = new HashMap<Integer, Integer>();
        
        for(var f : fruits) {
            map.put(f, map.getOrDefault(f, 0) + 1);
            if(map.get(f) == 1) diff++;
            length++;
            
            while(diff > 2) {
                map.put(fruits[index], map.get(fruits[index]) - 1);
                if(map.get(fruits[index++]) == 0) diff--;
                length--;
            }
            
            result = Math.max(result, length);
        }
        
        return result;
    }
}




제출 화면

leetcode 문제 맞았습니다


사실 diff 변수를 안쓰고 hashmap의 size를 사용하는게 더 좋아보이긴 했다.

나중에는 좀 더 신경쓰면서 푸는걸로!


내일도 문제를 풀어서 블로그에 글을 쓸 수 있으면 좋겠다.