//LV2. 최솟값만들기 public int solution_make_min_value(int []A, int []B){ Arrays.sort(A); Arrays.sort(B); return IntStream.range(0,A.length).map(i->A[i]*B[B.length-i-1]).sum(); }
처음에 replace로 간단하게 풀려했다가 효율성 통과를 못해서 스택으로 변경했다.ㅠㅠ 스택을 사용한 경우엔 시간복잡도가 O(N)이고 replace를 사용한 경우 O(N²)이라고 한다. 앞으로는 귀찮다고 불필요하게 replace를 남용하면 안될거같다. //LV2. 올바른 괄호 public static boolean solution_correct_bracket(String s) { int i=0; Stack stack = new Stack(); while(i
LV1 문제들은 여러가지 방식 사용해서 풀어보고 싶어서 효율성 생각 안하고 풀었다.. ㅎㅎ 특히 람다 사용하고 싶어서 억지로 쓴 문제들이 많음 // Lv.1 신고 결과 받기 public static int[] solution_RepostResult(String[] id_list, String[] report, int k) { Map repomap = new HashMap(); // 신고 당한 횟수 Map repomapList = new HashMap(); // 신고 기록 Arrays.asList(id_list).forEach(id -> { repomap.put(id, 0); repomapList.put(id, new ArrayList()); }); Arrays.stream(report).distinct(..
// LV.2 귤고르기 public static int solution_choice_tangerine(int k, int[] tangerine) { int answer = 0; Long[] arr = Arrays.stream(tangerine).boxed() .collect(Collectors.groupingBy(Function.identity(),Collectors.counting())) .values().toArray(Long[]::new); Arrays.sort(arr,Comparator.reverseOrder()); int sum = 0; for(Long i : arr){ sum += i; answer++; if(k