[Programmers] 할인 행사

2023. 8. 17. 15:13Computer Sciences/Problem Solve

https://school.programmers.co.kr/learn/courses/30/lessons/131127

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

간단한 구현 문제이다. 유의할 점은 가장 빨리 모든 물품을 구매하는 날이 아니라 물품 구매가 가능한 모든 날을 구하는 문제라는 점이다.

import java.util.HashMap;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        int answer = 0;
        
        for (int day = 0; day < discount.length - 9; day++) {
            HashMap<String, Integer> map = init(want, number);
            for (int i = day; i < day + 10; i++) {
                if (map.containsKey(discount[i])) {
                    map.put(discount[i], map.get(discount[i]) - 1);
                    continue;
                }
                
                break;
            }
            
            boolean canAllBuy = true;
            for (int value: map.values()) {
                if (value > 0) {
                    canAllBuy = false;
                    break;
                }
            }
            
            if (canAllBuy) {
                answer++;
            }
        }
        
        return answer;
    }
    
    private HashMap<String, Integer> init(String[] want, int[] number) {
        HashMap<String, Integer> result = new HashMap<>();
        for (int i = 0; i < want.length; i++) {
            result.put(want[i], number[i]);
        }
        return result;
    }
}

'Computer Sciences > Problem Solve' 카테고리의 다른 글

[Programmers] [1차] 뉴스 클러스터링  (0) 2023.08.17
[Programmers] 튜플  (0) 2023.08.17
[Programmers] 교점에 별 만들기  (0) 2023.08.16
[Programmers] [1차] 캐시  (0) 2023.08.16
[Programmers] H-Index  (0) 2023.08.10