프로그래머스

99클럽 코테 스터디 7일차 TIL 프로그래머스 할인 행사(Java)

리콜 2024. 4. 4. 23:49

https://school.programmers.co.kr/learn/courses/30/lessons/131127

 

프로그래머스

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

programmers.co.kr

제한 사항

오늘의 학습 키워드

HashMap.keySet()

 

 

문제를 보고 for문으로 돌아가면서 체크를 하면 되겠다고 생각했다.

discount 배열에서 10개씩 골라가며 10개를 고르기 시작할때마다 discountMap을 초기화 한뒤

해당 이름을 찾아 갯수를 올려준다.

 

그뒤 정현이의 원하는 제품 갯수와 비교를 해준다면 해결할 수 있다.

 

시간이 널널하여 문제가 없었지만 HashMap을 다루는 것이 헷갈려 조금 방황하였다. 

 

import java.util.*;
class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        //할인하는 제품은 하루에 하나씩만 구매할 수 있습니다.
        //자신이 원하는 제품과 수량이 할인하는 날짜와 
        //10일 연속으로 일치할 경우에 맞춰서 회원가입을 하려 합니다.
                
        int answer = 0;
        
        Map<String, Integer> map = new HashMap<>();
        for(int i = 0; i < want.length; i++){
            map.put(want[i], number[i]);
        }
        
        for(int i = 0; i < discount.length - 9; i++){ //discount에서 시작점
            Map<String, Integer> discountMap = new HashMap<>();
            
            for(int k = 0; k< 10;k++){
                discountMap.put(discount[i + k], discountMap.getOrDefault(discount[i + k], 0) +1);
            }
            
            Boolean compare = true;
            
            for(String key : map.keySet()){
                if(map.get(key) != discountMap.get(key)){
                    compare = false;
                    break;
                }
            }
            
            if(compare){
                answer += 1;
            }
        }
        return answer;
    }
}

 

for(String key : map.keySet())로 간단하게 for(object a : 배열)과 같이 반복문을 선언할 수 있다는 것을 알게 되었다.

시간이 없어 예정하였던 것을 다 못하였는데 주말에 시간날때 전부 풀어야겠다.;;

 

 

반응형