문제
https://school.programmers.co.kr/learn/courses/30/lessons/131127
풀이
1. HashMap 사용. 원하는 제품과 수량을 put
원하는 제품의 총 개수 구함 => count
HashMap<String, Integer> map = new HashMap<>();
int count = 0;
for(int i=0 ;i<want.length; i++){
map.put(want[i], number[i]);
count+= number[i];
}
2. 첫날부터 열째까지 할인하는 제품 확인
(1) 할인하는 제품이 있으면 hashmap에서 찾아서 수량을 줄여줌
(2) 중복돼서 나타나는 경우가 있기 때문에 count 수는 map.get(i)가 0보다 클때까지만 감소시키기.
for(int i=0 ;i<10; i++){
if(map.containsKey(discount[i])){
if(map.get(discount[i])>0) count--;
map.put(discount[i], map.get(discount[i])-1);
}
}
3. 맨 앞날의 정보를 지우고, 해당 날짜부터 10일 뒤 추가
for(int i=0; i<discount.length-10; i++){
if(map.containsKey(discount[i])){
if(map.get(discount[i])>=0){
count++;
}
map.put(discount[i], map.get(discount[i])+1);
}
if(map.containsKey(discount[i+10])){
if(map.get(discount[i+10])>0){
count--;
}
map.put(discount[i+10], map.get(discount[i+10])-1);
}
if(count==0) answer++;
}
전체 코드
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
HashMap<String, Integer> map = new HashMap<>();
int count = 0;
for(int i=0 ;i<want.length; i++){
map.put(want[i], number[i]);
count+= number[i];
}
for(int i=0 ;i<10; i++){
if(map.containsKey(discount[i])){
if(map.get(discount[i])>0) count--;
map.put(discount[i], map.get(discount[i])-1);
}
}
if(count==0) answer++;
for(int i=0; i<discount.length-10; i++){
if(map.containsKey(discount[i])){
if(map.get(discount[i])>=0){
count++;
}
map.put(discount[i], map.get(discount[i])+1);
}
if(map.containsKey(discount[i+10])){
if(map.get(discount[i+10])>0){
count--;
}
map.put(discount[i+10], map.get(discount[i+10])-1);
}
if(count==0) answer++;
}
// for(String key : map.keySet()){
// System.out.println(key + "??"+map.get(key));
// }
return answer;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 멀리 뛰기 (Java/자바) - dp (0) | 2023.11.18 |
---|---|
[프로그래머스] N개의 최소공배수 (Java/자바) - 유클리드호제법 (0) | 2023.11.17 |
[프로그래머스] 수식 최대화(Java/자바) || 2020카카오인턴십 - dfs, 순열 (0) | 2023.11.17 |
[프로그래머스] 영어 끝말잇기 (Java/자바) (0) | 2023.10.14 |
[프로그래머스] 짝지어 제거하기(Java/자바) || 2017 팁스타운(stack, 완전탐색) (0) | 2023.10.14 |