[JAVA] 프로그래머스 할인행사

2024. 12. 4. 12:52·Algorithm/Programmers
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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

저작자표시 (새창열림)

'Algorithm > Programmers' 카테고리의 다른 글

[JAVA] 프로그래머스 [1차] 캐시  (1) 2024.12.09
[JAVA] 프로그래머스 괄호 회전하기  (1) 2024.12.05
[JAVA] 프로그래머스 연속 부분 수열 합의 개수  (0) 2024.12.02
[JAVA] 프로그래머스 예상 대진표  (1) 2024.11.30
[JAVA] 프로그래머스 귤 고르기  (0) 2024.11.25
'Algorithm/Programmers' 카테고리의 다른 글
  • [JAVA] 프로그래머스 [1차] 캐시
  • [JAVA] 프로그래머스 괄호 회전하기
  • [JAVA] 프로그래머스 연속 부분 수열 합의 개수
  • [JAVA] 프로그래머스 예상 대진표
chanheess
chanheess
'왜' 그렇게 했는가?에 대한 생각으로 공부 및 작업의 저장관리
  • chanheess
    왜 그렇게 생각했는가?
    chanheess
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Backend Programming
      • Game Programming
        • Unreal
        • DirectX
      • C++
        • Memo
        • Basic
        • Effective Modern
      • Algorithm
        • Memo
        • Baekjoon
        • Programmers
        • HackerRank, LeetCode
      • Data Structure
      • Design Pattern
      • Etc
        • Memo
        • Daily Log
        • Book
  • 최근 글

  • 최근 댓글

  • 태그

    티스토리챌린지
    JWT
    위클리 챌린지
    알고리즘
    JPA
    프로그래머스
    Java
    spring
    c++ 기초 플러스
    dp
    SpringSecurity
    오블완
    dfs
    백준
  • hELLO· Designed By정상우.v4.10.0
chanheess
[JAVA] 프로그래머스 할인행사
상단으로

티스토리툴바