Algorithm/Programmers

[Programmers] 할인 행사 / ⭕

cks._.hong 2024. 10. 6. 15:28

 

 

프로그래머스

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

programmers.co.kr

 

1. 제출 코드 (7분 00초 / 맵)

import java.util.*;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        int answer = 0;
        Map<String, Integer> m = new HashMap<>();
        
        for(int i = 0; i <= discount.length - 10; i++) {
            m = new HashMap<>();
            for(int j = 0; j < 10; j++) {
                m.put(discount[i + j], m.getOrDefault(discount[i + j], 0) + 1);
            }
            boolean isValid = true;
            for(int j = 0; j < want.length; j++) {
                if(m.getOrDefault(want[j], 0) < number[j]) {
                    isValid = false;
                    break;
                }
            }
            if(isValid) {
                answer++;
            }
        }
        return answer;
    }
}

 

 

2. 구현 로직

  1. 10일 연속으로 일치할 경우에 회원가입을 하므로 discount의 앞에서부터 10개씩 검사를 진행한다.
  2. 맵에 각 상품의 COUNT를 저장하고 정현이가 사고자하는 품목과 개수를 비교한다.
  3. 만약, 그 값이 크다면 answer + 1
  4. 만약, 작다면 회원가입하면 안되는 날이므로 break를 통해 반복문을 빠져나온다.