원하는 것은 뭐든지
99클럽 코테 스터디 27일차 TIL , 할인 행사 본문
반응형
문제
풀이
원하는 물건을 모두 할인가격에 사기 위해서 언제 가입을 해야 하는지 찾는 문제였다.
원하는 물건과 개수 그리고 할인품목들이 입력으로 주어지는데 할인품목은 당일에 하나씩만 구매할 수 있다.
또 할인 물품을 사려면 회원가입을 해야 하는데 10일 동안만 유지되었다. 해서 10일을 최대한 활용해서 원하는 물건을 구매할 수 있는 날이 며칠인지를 구하면 된다.
제출 1 - 정답
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
Map<String, Integer> map = new HashMap<>();
Map<String, Integer> checkMap = new HashMap<>();
int total = 0;
for(int i=0;i<want.length;i++){
map.put(want[i], number[i]);
total += number[i];
}
int lt = 0;
int rt = 0;
while(rt < discount.length){
if(rt - lt == total){
if(check(map, checkMap)) answer++;
checkMap.put(discount[lt], checkMap.get(discount[lt]) - 1);
lt++;
}else{
checkMap.put(discount[rt], checkMap.getOrDefault(discount[rt],0) + 1);
rt++;
}
}
if(check(map, checkMap)) answer++;
return answer;
}
private static boolean check(Map<String, Integer> map,
Map<String, Integer> checkMap){
for(String key : map.keySet()){
if(map.get(key) != checkMap.get(key)){
return false;
}
}
return true;
}
}
원하는 물건과 개수를 Map에 담아주고 check를 위한 Map도 생성해준다.
그 후 lt와 rt를 만들어 앞으로 전진하면서 같아질 경우를 정답에 추가해 준다.
TIL
- 조건 인지
반응형
'개발 > 문제풀이' 카테고리의 다른 글
99클럽 코테 스터디 29일차 TIL , Longest Increasing Subsequence (0) | 2024.08.20 |
---|---|
99클럽 코테 스터디 28일차 TIL , 괄호 회전하기 (0) | 2024.08.18 |
99클럽 코테 스터디 26일차 TIL , 달리기 경주 (0) | 2024.08.16 |
99클럽 코테 스터디 25일차 TIL , Evaluate Division (0) | 2024.08.16 |
99클럽 코테 스터디 24일차 TIL , 대충 만든 자판 (0) | 2024.08.14 |
Comments