TIL Java

내일배움캠프 46일차 TIL _ 10주 3일차

mad038 2024. 6. 19. 20:50

 

  • 오늘 있었던 일
    • 팀과제
    • 알고리즘

SPRIONG

  • 스프링 정리

알고리즘 문제 풀기

 

     ● 할인행사

더보기

● 할인행사 //링크

import java.util.*;

class Solution {
    public int solution(String[] want, int[] number, String[] discount) {
        Set<String> set = new HashSet<>(Arrays.asList(want));
        int answer = 0;
        for (int r = 0; r < discount.length - 9; r++) {
            String[] z = Arrays.copyOfRange(discount, r, r+10);
            int vv = 0;
            for (int i = 0; i < want.length; i++) {
                if(!set.contains(want[i])) {
                    break;
                }
                int v = number[i];
                for(String s : z){
                    if(s.equals(want[i])) {
                        v--;
                    }
                }
                if(v != 0) {
                    break;
                }else{
                    vv++;
                }
            }
            if(set.size() == vv) {
                answer++;
            }
        }
        return answer;
    }
}
  • 태스트문은 통과했었지만 이후 시간초과가 일어났었다.
  • 문제 지문에
    • 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개

    • 단순하게 했더니 시간 초과가 일어났다.
    • set을 이용해 구매해야할 품목에 없으면 브레이크를 걸어 시간을 단축했더니 통과했다.
  • 밑은 다른 사람의 풀이
  • class Solution {
        public int solution(String[] want, int[] number, String[] discount) {
            int answer = 0;
            ArrayList<String> list = new ArrayList<>();
    
            for (int i=0; i<want.length; i++) {
                while (number[i]-- > 0) {
                    list.add(want[i]);
                }
            }
    
            for (int i=0; i<discount.length-list.size()+1;i ++) {
                ArrayList<String> l = (ArrayList<String>) list.clone();
                for (int j=i; j<i+list.size(); j++) {
                    if (l.contains(discount[j])) {
                        l.remove(discount[j]);
                    } else {
                        break;
                    }
                }
                answer += l.size()==0 ? 1 : 0;
            }
    
            return answer;
        }
    }
  • 거의 비슷하네

 


당일 회고

  • 팀원중 두명이 전공자였다... 엄청 잘하네