import java.util.HashMap;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
HashMap<String, Integer> map = new HashMap<>();
// 처음 10개의 아이템을 카운트
for (int i = 0; i < 10; i++) {
map.put(discount[i], map.getOrDefault(discount[i], 0) + 1);
}
//첫날 확인
if(checkWant(map, want, number)) {
answer++;
}
for(int i = 10; i < discount.length; i++) {
map.put(discount[i - 10], map.get(discount[i - 10]) - 1);
map.put(discount[i], map.getOrDefault(discount[i], 0) + 1);
if(checkWant(map, want, number)) {
answer++;
}
}
return answer;
}
static boolean checkWant(HashMap<String, Integer> map,
String[] want, int[] number) {
for(int i = 0; i < want.length; i++) {
if(map.getOrDefault(want[i], 0) < number[i]) {
return false;
}
}
return true;
}
}
주어진 조건
- 회원가입 일 수 10
- 최대 수량 10
- 회원등록시 정현이가 원하는 제품을 모두 할인 받을 수 있는 회원등록 날짜의 총 일수를 return
생각한 풀이
처음에 10개를 넣고 한칸씩 이동하면 될 것 같다고 생각하면서 풀었고 바로 해결되었습니다.
풀이
1. map으로 회원 기간동안의 물품 개수를 count 해줍니다.
2. 회원 기간동안에 원하는 물품들이 다 있는지 확인해줍니다.
3. 다 있다면 회원등록 가능 날짜의 개수를 증가해줍니다.
느낀점
처음에는 가장빨리 되는 날짜를 체크하는줄 알았는데 아니였고 되는 날짜 모두를 구하는 것이였다. 앞으로는 풀기 전에 조건을 체크할 때 정확히 어떤 값을 return해줘야되는지도 글로 적어서 확실하게 체크해줘야될 것 같다.
https://school.programmers.co.kr/learn/courses/30/lessons/131127
'Algorithm > Programmers' 카테고리의 다른 글
[JAVA] 프로그래머스 [1차] 캐시 (1) | 2024.12.09 |
---|---|
[JAVA] 프로그래머스 괄호 회전하기 (0) | 2024.12.05 |
[JAVA] 프로그래머스 연속 부분 수열 합의 개수 (0) | 2024.12.02 |
[JAVA] 프로그래머스 예상 대진표 (1) | 2024.11.30 |
[JAVA] 프로그래머스 귤 고르기 (0) | 2024.11.25 |