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