📌 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌 풀이
- 고객이 원하는 장바구니에 대한 map을 생성합니다.
- 할인점에서 만들 수 있는 장바구니(10일치)를 생성합니다.
- ✔️number 원소의 합은 10이므로 10일치에 대한 장바구니를 생성합니다.
- 이 둘을 비교하여 일치한다면 (장바구니를 구성하고 있는 과일과 그 개수) answer 의 값을 증가시켜 줍니다.
📌 코드
import java.util.*;
class Solution {
private static int answer = 0;
public int solution(String[] want, int[] number, String[] discount) {
Map<String,Integer> map = new HashMap<>();
//System.out.println(number.length);
for(int i = 0; i < want.length; i++){ //원하는 장바구니 Map
map.put(want[i],number[i]);
}
//discount의 길이는 무조건 10 이상이다.
for(int i = 0; i <= discount.length-10; i++){ //길이가 10만큼 장바구니 만듬
check(map , cart(i,discount)); //원하는 장바구니 map 과 만들어진 장바구니 비교
}
return answer;
}
// 10일간 만들어질 수 있는 장바구니 Map
private static Map<String,Integer> cart(int index,String[] discount){
Map<String,Integer> map = new HashMap<>();
for(int i = index; i < index+10; i++){
map.put(discount[i],map.getOrDefault(discount[i],0)+1);
}
//System.out.println(map);
return map;
}
// 원하는 장바구니와 10일간 담을수 있는 장바구니를 비교하는 메서드
private static void check(Map<String,Integer> want, Map<String,Integer> cart){
//map 비교는 equals 로 하면 된다.
if(!want.equals(cart)){
return;
}
answer++;
}
}
'Algorithms > 프로그래머스' 카테고리의 다른 글
[Lv2] 호텔 대실 (0) | 2023.11.08 |
---|---|
[Lv2] 뒤에 있는 큰 수 찾기 (0) | 2023.11.04 |
[프로그래머스][Lv1][Java] 푸드파이트 대회 (0) | 2023.02.26 |
[프로그래머스][Lv2][Java] 폰켓몬 (0) | 2023.02.21 |
[프로그래머스][Lv2][Java] 멀리뛰기 (0) | 2023.02.18 |