728x90
SMALL
문제 이해
- 할인하는 제품이 1 ~ n 일까지 들어있는 discount가 존재한다. 제품은 하루에 한개씩만 할인해준다.
- 정현이는 원하는 제품 want와 원하는 제품의 개수가 담긴 number가 존재한다.
- 해당 제품을 모두 할인 받을 수 있는 날이 n ~ N 까지 몇번 되는지 구하여라
- 원하는 제품과 개수를 담아서 비교 할수 있게 map을 만들어서 들고 다녔다.
- 제품의 개수는 10개 고정임으로 discount-10 길이 만큼 index 를 하나씩 올리며 전체 할인이 되는지 구하였다.
- temp라는 임시 map에 discount[i ~ i+10] 의 제품이 몇번씩 나오는지 넣는다.
- temp == map 이 똑같다면 원하는 제품을 전부 살수 있다는 뜻으로 하였다.
import java.util.*;
class Solution {
public int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i<want.length; i++){
map.put(want[i], number[i]);
}
for(int i = 0; i<=discount.length-10; i++){
Map<String, Integer> temp = new HashMap<String, Integer>();
for(int j = i; j<i+10; j++){
if(temp.containsKey(discount[j])){
temp.put(discount[j], temp.get(discount[j]) + 1);
}else{
temp.put(discount[j], 1);
}
}
int cnt = 0;
for ( String key : map.keySet() ) {
if(temp.containsKey(key)){
if(temp.get(key) == map.get(key)){
cnt++;
}
}else{
break;
}
}
if(cnt == map.size()){
answer += 1;
}
}
return answer;
}
}
728x90
LIST
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] [1차] 캐시 - Java(자바) (0) | 2024.03.27 |
---|---|
[프로그래머스] 기능개발 - Java(자바) (1) | 2024.03.26 |
[프로그래머스] 괄호 회전하기 - Java(자바) (0) | 2024.03.26 |
[프로그래머스] 구명보트 - Java(자바) (0) | 2024.03.25 |
[프로그래머스] 영어 끝말잇기 - Java(자바) (0) | 2024.03.25 |