From b61d12067c5420670155bd941e95b9218d3d40a1 Mon Sep 17 00:00:00 2001 From: 724thomas <724thomas@gmail.com> Date: Wed, 23 Apr 2025 10:19:45 +0900 Subject: [PATCH] Day23 --- .../Q1773.java" | 33 ++++++++++++ .../Q3191.java" | 28 ++++++++++ .../Q1675.java" | 53 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 "leetcode2/1easy/\354\265\234\354\233\220\354\244\200/Q1773.java" create mode 100644 "leetcode2/2medium/\354\265\234\354\233\220\354\244\200/Q3191.java" create mode 100644 "leetcode2/3hard/\354\265\234\354\233\220\354\244\200/Q1675.java" diff --git "a/leetcode2/1easy/\354\265\234\354\233\220\354\244\200/Q1773.java" "b/leetcode2/1easy/\354\265\234\354\233\220\354\244\200/Q1773.java" new file mode 100644 index 00000000..44034bc1 --- /dev/null +++ "b/leetcode2/1easy/\354\265\234\354\233\220\354\244\200/Q1773.java" @@ -0,0 +1,33 @@ +package Leetcode; + +/* +1. 아이디어 : + 브루트 포스 + +2. 시간복잡도 : +O( n ) + +3. 자료구조/알고리즘 : +- / 브루트 포스 + */ + +import java.util.List; + +public class Q1773 { + class Solution { + public int countMatches(List> items, String ruleKey, String ruleValue) { + int ans = 0; + for (List item : items) { + String type = item.get(0), color = item.get(1), name = item.get(2); + if (ruleKey.equals("type")) { + if (ruleValue.equals(type)) ans++; + } else if (ruleKey.equals("color")) { + if (ruleValue.equals(color)) ans++; + } else { + if (ruleValue.equals(name)) ans++; + } + } + return ans; + } + } +} diff --git "a/leetcode2/2medium/\354\265\234\354\233\220\354\244\200/Q3191.java" "b/leetcode2/2medium/\354\265\234\354\233\220\354\244\200/Q3191.java" new file mode 100644 index 00000000..55b7ba15 --- /dev/null +++ "b/leetcode2/2medium/\354\265\234\354\233\220\354\244\200/Q3191.java" @@ -0,0 +1,28 @@ +package Leetcode; + +/* +1. 아이디어 : +순차적으로 순회를 하면서 0을 만나면 연속된 3개를 뒤집는다 + +2. 시간복잡도 : +O( 3n ) + +3. 자료구조/알고리즘 : +- / 브루트 포스 + */ + +public class Q3191 { + class Solution { + public int minOperations(int[] nums) { + int ans = 0; + int n = nums.length; + for (int i=0; i pq = new PriorityQueue<>((a, b)->b-a); //내림차순 + int cmin = Integer.MAX_VALUE; + + //짝수로 만든다. + for (int num : nums) { //nlogn + if (num%2==1) num*=2; + pq.add(num); + cmin = Math.min(cmin, num); + } + + int ans = Integer.MAX_VALUE; + + while (true) { // nlog M + int maxNum = pq.poll(); // 제일 큰 값을 꺼내고 logN + ans = Math.min(ans, maxNum-cmin); // 제일 큰값과 제일 작은 값의 차이 저장 + if (maxNum % 2 == 1) break; // 제일 큰 값을 더 이상 나눌 수 없으면 종료 + + maxNum /= 2; // 제일 큰 값을 2로 나눔 + cmin = Math.min(cmin, maxNum); // 최소값 갱신 + pq.add(maxNum); + } + + + return ans; + + } + } +}