From 9a53e3b8b3a42fe29c20799502818c87f0961339 Mon Sep 17 00:00:00 2001 From: jaehoonlee Date: Wed, 9 Apr 2025 21:02:21 -0400 Subject: [PATCH] =?UTF-8?q?[=EC=9D=B4=EC=9E=AC=ED=9B=88]=20Day14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- leetcode2/1easy/Q2273.java | 37 ++++++++++++++++++++++++ leetcode2/2medium/Q2368.java | 55 ++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 leetcode2/1easy/Q2273.java create mode 100644 leetcode2/2medium/Q2368.java diff --git a/leetcode2/1easy/Q2273.java b/leetcode2/1easy/Q2273.java new file mode 100644 index 00000000..3ca9dbf3 --- /dev/null +++ b/leetcode2/1easy/Q2273.java @@ -0,0 +1,37 @@ +package Leetcode; + +/* +1. 아이디어 : + + - 처음 값을 넣고 계속 비교하면서 애나그램이 아닌경우 넣기 + +2. 시간복잡도 : +O( n log n ) +3. 자료구조/알고리즘 : +- / 완전탐색 + */ + +public class Q2273 { + class Solution { + public List removeAnagrams(String[] words) { + List result = new ArrayList<>(); + result.add(words[0]); + + for (int i = 1; i < words.length; i++) { + if (!isAnagram(result.get(result.size() - 1), words[i])) { + result.add(words[i]); + } + } + + return result; + } + + private boolean isAnagram(String s1, String s2) { + char[] a = s1.toCharArray(); + char[] b = s2.toCharArray(); + Arrays.sort(a); + Arrays.sort(b); + return Arrays.equals(a, b); + } + } +} \ No newline at end of file diff --git a/leetcode2/2medium/Q2368.java b/leetcode2/2medium/Q2368.java new file mode 100644 index 00000000..977079c3 --- /dev/null +++ b/leetcode2/2medium/Q2368.java @@ -0,0 +1,55 @@ +package Leetcode; + +/* +1. 아이디어 : + +- 인접 리스트 생성 후 +- bfs로 각 레벨 하나씩 내려가면서 확인 + +2. 시간복잡도 : +O( n ) +3. 자료구조/알고리즘 : +- / bfs + */ + +public class Q2368 { + class Solution { + public int reachableNodes(int n, int[][] edges, int[] restricted) { + List> graph = new ArrayList<>(); + for(int i = 0; i()); + + for(int[] edge : edges) { + graph.get(edge[0]).add(edge[1]); + graph.get(edge[1]).add(edge[0]); + } + + Set restrictedSet = new HashSet<>(); + for(int r : restricted) { + restrictedSet.add(r); + } + + boolean[] visited = new boolean[n]; + Queue queue = new LinkedList<>(); + + queue.offer(0); + visited[0] = true; + + int count = 0; + + while(!queue.isEmpty()) { + int node = queue.poll(); + count++; + + for(int neighbour : graph.get(node)) { + if(!visited[neighbour] && !restrictedSet.contains(neighbour)) { + visited[neighbour] = true; + queue.offer(neighbour); + } + } + } + return count; + } + + + } +} \ No newline at end of file