[프로그래머스] 할인 행사 java

Bong2·2024년 8월 5일
0

알고리즘

목록 보기
58/63

문제 - 할인행사

문제접근

  1. HashMap을 이용하여 10일간의 할인품목들의 갯수를 미리 저장
  2. 내가 원하는 품목의 갯수와 할인품목들의 갯수가 일치하면 answer+1
  3. 일치하지않으면 +0을 해준다.
  4. Map에 들어가지 않는 품목이 있을 수 있으므로 null체크

소스코드

import java.util.*;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        int answer = 0;
        int days = 10;
        
        //10일간 회원유지가 되므로
        for(int i=0;i <= discount.length-days;i++)
        {
            //10일간 할인품목 갯수 저장
            Map<String, Integer> discounts = new HashMap<>();
        
            for(int j=0;j<days;j++)
            {
                discounts.put(discount[i+j],
                              discounts.getOrDefault(discount[i+j],0)+1);
            }
            
            boolean check = true;
            for(int idx = 0;idx<want.length;idx++)
            {
                if(discounts.get(want[idx]) == null)
                {
                    check = false;
                    break;
                }
                if(number[idx] != discounts.get(want[idx]))
                {
                    check = false;
                    break;
                }
            }
            
            answer += check ? 1 : 0;
            
        }
        
        
        return answer;
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글