📝 문제
🔥 시도해본 접근 방식
discount 배열을 10일씩 하루간격으로 반복하여 자르고 want 배열의 물품들의 갯수가 동일할 때 회원가입 가능 일수를 +1 하는 방식으로 접근했다.
1. 원하는 물품이 몇개 필요한지 빠르게 알아내기 위해 want배열과 number배열을 Map으로 선언한다.
2. 1번에서 선언한 Map과 비교를 위해 discount 배열을 10개 씩 key: 물품 value: 갯수 와 같은 Map으로 선언한다.
3. 먼저 회원가입 가능 일수를 +1 한다.
4. 원하는 물품 Map과 discount Map을 하나씩 반복하여 비교하고 전부 일치하지 않는다면 회원가입 가능 일수를 -1 한다.
5. [2] ~ [4]를 discount 배열의 마지막 10일까지 반복
✨ 성공 코드
import java.util.HashMap;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
// 원하는 제품과 수량을 Map으로 선언
HashMap<String, Integer> wantMap = new HashMap<>();
for (int i = 0; i < number.length; i++) {
wantMap.put(want[i], number[i]);
}
// 10일간 할인 상품과 개수를 저장할 Map 선언
HashMap<String, Integer> discountMap = new HashMap<>();
// 10일씩 하루 간격으로 자르는 것을 반복
for (int discountMapLastIndex = 10; discountMapLastIndex <= discount.length; discountMapLastIndex++) {
discountMap.clear();
// 할인 강품과 개수를 Map에 저장
for (int i = discountMapLastIndex - 10; i < discountMapLastIndex; i++) {
discountMap.put(discount[i], discountMap.getOrDefault(discount[i], 0) + 1);
}
// 회원등록 가능한 날짜를 미리 더해 놓는다.
answer++;
for (String s : want) {
if (!wantMap.get(s).equals(discountMap.getOrDefault(s, 0))) {
// 위에서 자른 10일 중에 원하는 항목이 없거나 부족할 경우
// 위에서 미리 더한 회원등록 가능한 날짜를 다시 내린다.
answer--;
break;
}
}
}
return answer;
}
}
'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글
99클럽 코테 스터디 29일차 Longest Increasing Subsequence (0) | 2024.08.19 |
---|---|
99클럽 코테 스터디 28일차 괄호 회전하기 (0) | 2024.08.19 |
99클럽 코테 스터디 26일차 달리기 경주 (0) | 2024.08.16 |
99클럽 코테 스터디 25일차 Evaluate Division (0) | 2024.08.16 |
99클럽 코테 스터디 24일차 대충 만든 자판 [작성중] (0) | 2024.08.14 |