99클럽 코테 스터디 27일차 할인 행사

2024. 8. 18. 02:14·스터디/99클럽 코테 스터디 TIL

📝 문제

 

프로그래머스

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

programmers.co.kr

🔥 시도해본 접근 방식

discount 배열을 10일씩 하루간격으로 반복하여 자르고 want 배열의 물품들의 갯수가 동일할 때 회원가입 가능 일수를 +1 하는 방식으로 접근했다.

 

1. 원하는 물품이 몇개 필요한지 빠르게 알아내기 위해 want배열과 number배열을 Map으로 선언한다.

2. 1번에서 선언한 Map과 비교를 위해 discount 배열을 10개 씩 key: 물품 value: 갯수 와 같은 Map으로 선언한다.

3. 먼저 회원가입 가능 일수를 +1 한다.

4. 원하는 물품 Map과 discount Map을 하나씩 반복하여 비교하고 전부 일치하지 않는다면 회원가입 가능 일수를 -1 한다.

5. [2] ~ [4]를 discount 배열의 마지막 10일까지 반복

 

✨ 성공 코드

import java.util.HashMap;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        int answer = 0;

        // 원하는 제품과 수량을 Map으로 선언
        HashMap<String, Integer> wantMap = new HashMap<>();

        for (int i = 0; i < number.length; i++) {
            wantMap.put(want[i], number[i]);
        }

        // 10일간 할인 상품과 개수를 저장할 Map 선언
        HashMap<String, Integer> discountMap = new HashMap<>();

        // 10일씩 하루 간격으로 자르는 것을 반복
        for (int discountMapLastIndex = 10; discountMapLastIndex <= discount.length; discountMapLastIndex++) {
            discountMap.clear();

            // 할인 강품과 개수를 Map에 저장
            for (int i = discountMapLastIndex - 10; i < discountMapLastIndex; i++) {
                discountMap.put(discount[i], discountMap.getOrDefault(discount[i], 0) + 1);
            }

            // 회원등록 가능한 날짜를 미리 더해 놓는다.
            answer++;

            for (String s : want) {
                if (!wantMap.get(s).equals(discountMap.getOrDefault(s, 0))) {
                    // 위에서 자른 10일 중에 원하는 항목이 없거나 부족할 경우
                    // 위에서 미리 더한 회원등록 가능한 날짜를 다시 내린다.
                    answer--;
                    break;
                }
            }
        }

        return answer;
    }
}

'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글

99클럽 코테 스터디 29일차 Longest Increasing Subsequence  (0) 2024.08.19
99클럽 코테 스터디 28일차 괄호 회전하기  (0) 2024.08.19
99클럽 코테 스터디 26일차 달리기 경주  (0) 2024.08.16
99클럽 코테 스터디 25일차 Evaluate Division  (0) 2024.08.16
99클럽 코테 스터디 24일차 대충 만든 자판 [작성중]  (0) 2024.08.14
'스터디/99클럽 코테 스터디 TIL' 카테고리의 다른 글
  • 99클럽 코테 스터디 29일차 Longest Increasing Subsequence
  • 99클럽 코테 스터디 28일차 괄호 회전하기
  • 99클럽 코테 스터디 26일차 달리기 경주
  • 99클럽 코테 스터디 25일차 Evaluate Division
Been
Been
  • Been
    Been
    Been
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 언어 (0)
        • Kotlin (0)
      • 안드로이드 (17)
      • iOS (3)
      • Git (1)
      • 스터디 (39)
        • 알고리즘 문제 풀이 (1)
        • 99클럽 코테 스터디 TIL (38)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Androiod
    TIL
    아이폰
    객체변환
    언더라인 제거
    debugRuntimeClasspath
    쓰기권한
    maxWidth
    코딩테스트준비
    Android
    EditText
    FragmentStateAdapter
    java
    자바
    항해99
    리싸이클러뷰
    RecyclerView
    개발자취업
    풀이실패
    깃
    Git
    Coroutines
    WRITE EXTERNAL
    밑줄제거
    IOS
    99클럽
    nsl
    안드로이드
    NSR
    AndroidID
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Been
99클럽 코테 스터디 27일차 할인 행사
상단으로

티스토리툴바