Java/Programmers
[Lv.2]할인행사
GLOWWW
2023. 3. 9. 17:47
- ArrayList을 생성하여 원하는 물품을 갯수에 맞게 담아준다.
- 투포인터를 활용, int start_point, end_point를 생성해준다. (슬라이딩 윈도우)
- 반복문을 수행한다. (while문, 종료조건은 end_point가 discount의 길이만큼 되었을 때)3-2. for문을 start_point부터 end_point까지 수행해준다. discount배열을 순회하게된다.3-4. tmp가 비었다면, answer++;
- 3-5. end_point와 start_point를 ++해준다.
- 3-3. tmp에 discount가 들어있으면 tmp리스트에서 remove해준다.
- 3-1. tmp라는 새로운 ArrayList를 생성(1번 단계에서 생성된 ArrayList를 카피한다)
package PG.Lv_2;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class 할인행사 {
public static int solution(String[] want, int[] number, String[] discount) {
int answer = 0;
int start_point = 0;
int end_point = 10;
List<String> need_to_buy = new ArrayList<>();
for (int i = 0; i < number.length; i++) {
for (int j = 0; j < number[i]; j++) {
need_to_buy.add(want[i]);
}
}
while (end_point <= discount.length) {
List<String> tmp = new ArrayList<>(need_to_buy);
for (int i = start_point; i < end_point; i++) {
if (tmp.contains(discount[i])) {
tmp.remove(discount[i]);
}
}
if (tmp.isEmpty()) {
answer++;
}
end_point++;
start_point++;
}
return answer;
}
public static void main(String[] args) {
String[] want = {"banana", "apple", "rice", "pork", "pot"};
int[] number = {3, 2, 2, 2, 1};
String[] discount = {"chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"};
int result = solution(want, number, discount);
System.out.println("결과는 = " + result);
}
}