Java/Programmers

[Lv.2]할인행사

GLOWWW 2023. 3. 9. 17:47
  1. ArrayList을 생성하여 원하는 물품을 갯수에 맞게 담아준다.
  2. 투포인터를 활용, int start_point, end_point를 생성해준다. (슬라이딩 윈도우)
  3. 반복문을 수행한다. (while문, 종료조건은 end_point가 discount의 길이만큼 되었을 때)3-2. for문을 start_point부터 end_point까지 수행해준다. discount배열을 순회하게된다.3-4. tmp가 비었다면, answer++;
  4. 3-5. end_point와 start_point를 ++해준다.
  5. 3-3. tmp에 discount가 들어있으면 tmp리스트에서 remove해준다.
  6. 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);
    }
}