-
[프로그래머스] 할인 행사_Java코딩테스트 2024. 4. 29. 20:10
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/131127#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. 원하는 제품을 나타내는 문자열 배열 want, 원하는 제품의 수량을 나타내는 정수 배열 number, 할인하는 제품을 나타내는 문자열 배열 discount가 주어진다.
2. XYZ 마트는 일정한 금액을 지불하면 10일 동안 회원 자격을 부여한다. 회원을 대상으로 매일 한 가지 제품을 할인하며 제품은 하루에 하나씩만 구매할 수 있다.3. 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우의 수를 return 한다.
코드
10일간의 할인 품목과 구매 가능 개수를 HashMap에 담아 회원 가입할 날의 수를 체크한다.import java.util.*; class Solution { public int solution(String[] want, int[] number, String[] discount) { int answer = 0; Map<String,Integer> basket = new HashMap(); for(int i=0; i<discount.length; i++){ String todayDiscount = discount[i]; basket.put(todayDiscount,basket.getOrDefault(todayDiscount,0)+1); if(i>=10){ int n = basket.put(discount[i-10], basket.getOrDefault(discount[i-10],0)-1); } if(want.length <= basket.size()){ boolean isJoinDate = true; for(int j =0; j<want.length; j++){ if(number[j] > basket.getOrDefault(want[j],0)) { isJoinDate = false; break; } } if(isJoinDate) answer++; } } return answer; } }
실행 결과
'코딩테스트' 카테고리의 다른 글
[백준] 5532 방학 숙제_Java (1) 2024.05.01 [백준] 16199 나이 계산하기_Java (0) 2024.05.01 [프로그래머스] 괄호 회전하기_Java (0) 2024.04.26 [백준] 30970 선택의 기로_Java (0) 2024.04.24 [프로그래머스] 큰 수 만들기_Java (0) 2024.04.23