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; } }
- 거의 비슷하네
당일 회고
- 팀원중 두명이 전공자였다... 엄청 잘하네