[JAVA 문제 풀이] 288. 할인 행사

프로그래머스 (131127)
Stupefyee's avatar
May 29, 2025
[JAVA 문제 풀이] 288. 할인 행사
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int solution(String[] want, int[] number, String[] discount) { int answer = 0; // 총 할인 일 수에서 10일을 뺀 만큼 반복 for(int i = 0; i <= discount.length - 10; i++) { Map<String, Integer> cartMap = new HashMap<>(); // 장바구니 맵 // 장바구니에 물품, 수량을 넣기 for (int j = 0; j < want.length; j++) { cartMap.put(want[j], number[j]); } // 시작일 부터 10일 동안 할인된 물품을 확인 // 만약 장바구니에 있는 물품이 할인된 물품이라면 수량을 1 감소 for (int j = i; j < i + 10; j++) { String item = discount[j]; if (cartMap.containsKey(item)) { cartMap.put(item, cartMap.get(item) - 1); } } // 장바구니에 있는 물품의 수량이 모두 0 이하라면 answer 증가 if (cartMap.values().stream().allMatch(count -> count <= 0)) { answer++; } } return answer; } }
 

다른 사람의 코드

import java.util.*; class Solution { public int solution(String[] want, int[] number, String[] discount) { int answer = 0; ArrayList<String> list = new ArrayList<>(); // 장바구니 리스트 // number만큼 want를 장바구니에 담기 for (int i = 0; i < want.length; i++) { while (number[i]-- > 0) { list.add(want[i]); } } // // 총 할인 일 수에서 list.size()(10일)을 뺀 만큼 반복 for (int i = 0; i < discount.length - list.size() + 1; i++) { ArrayList<String> l = new ArrayList<>(list); // 장바구니 리스트를 복사 // 시작일부터 list.size()만큼의 할인 상품이 있는지 확인 for (int j = i; j < i + list.size(); j++) { if (l.contains(discount[j])) { // 상품이 있으면 장바구니에서 제거 l.remove(discount[j]); } else { // 상품이 없으면 break break; } } answer += l.size() == 0 ? 1 : 0; } return answer; } }
 
Share article

stupefyee