TIL (Today I Learned)

99클럽 코테 스터디 27일차 TIL + 오늘의 학습 키워드

남 희 2024. 8. 17. 21:55

☑️ 문제: 할인 행사

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

 

프로그래머스

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

programmers.co.kr

 

☑️ Code

import java.util.*;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        // hashMap에 want(key), index(value) 저장
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < want.length; i++) {
            map.put(want[i], i);
        }
        
        int answer = 0;
        int[] count = new int[want.length];
        for (int start = 0; start <= discount.length - 10; start++) { // (w. 10^5)
            // 1. count 초기화 (w: 10)
            for (int i = 0; i < want.length; i++) {
                count[i] = number[i];
            }
            
            // 2. day ~ day+9, 열흘간 할인 정보를 활용해 count 감소 (10)
            for (int day = start; day < start + 10; day++) {
                if (map.containsKey(discount[day])) {
                    count[map.get(discount[day])]--;
                } 
            }
            
            // 3. 열흘간 필요한 걸 모두 구했는지 확인. (w: 10)
            answer++;
            for (int i = 0; i < want.length; i++) {
                if (count[i] > 0) {
                    answer--;
                    break;
                }
            }
        }
        
        return answer;
    }
}

 

 

더보기
더보기

후기
원래는 hashmap을 설계로 떠올리더라도 구현이 익숙치 않았는데
이제 hashmap 구현도 익숙해져서 머리속에 있는 내용을 바로 옮길 수 있게 되었다. 일단 하는 게 중요하구나.