본문 바로가기

자바2

숫자 리스트의 두개의 합이 특정 숫자가 되는지 검사하기 1. 숫자 리스트가 주어지고 숫자 k가 주어질때 숫자 리스트의 2개의 숫자의 합이 k가 되는지를 검사할 수 있는가? 2. 한번 훑으면서 할 수 있는가? (시간복잡도가 n인 상태로 할 수 있는가?) int[] list = {10, 15, 3, 7}; int k = 17; Set hashSet = new HashSet(); for(int item : list) { ①if(hashSet.contains(k-item)) return true; ②hashSet.add(item); } return false; 숫자 리스트에서 한개씩 숫자를 꺼내서 O(1)의 시간복잡도로 검사하기 위해서 ① HashSet을 사용하여 if문 안에서의 검색을 수행하고 ② 만족하지 않으면 해당 내용을 add해서 O(1)의 시간복잡도로 Ha.. 2024. 2. 29.
연결된 노드들 중에 그룹의 개수를 구하기 노드가 N개 존재하는데 그 중에 임의의 노드들끼리 연결되어 있는데 연결된 노드끼리 하나의 그룹이라고 할때 그룹의 총 개수를 구하기 1. 방문하지 않은 노드 선정, 그룹 개수 추가 2. 현재 노드를 방문처리 3. 현재 노드에서 갈 수 있는 모든 노드를 Que에 추가 4. Que에서 하나의 노드를 꺼냄 5. Que가 빌때까지 2~4 를 반복 6. Que가 빈 상태에서 아직 방문하지 않은 노드가 있으면 1번부터 다시 시작 2차원 배열로 된 표로 생각하면 1. 방문하지 않은 노드 선정, 그룹 개수 추가 1 (노드 선정) 1 0 1 1 0 0 0 1 2. 현재 노드를 방문처리 0 (방문 처리) 1 0 1 1 0 0 0 1 3. 현재 노드에서 갈 수 있는 모든 노드를 Que에 추가 0 1 (Que 추가) 0 1 1.. 2024. 1. 31.