개요알고리즘을 공부하다 보면 자주 마주치는 두 가지 개념이 있습니다. 바로 백트래킹(Backtracking)과 깊이 우선 탐색(DFS, Depth-First Search)인데요. 본 글에서는 얼핏 보면 비슷해 보이는 이 두 알고리즘의 차이점에 대해 정리하고자 합니다. 깊이 우선 탐색(DFS)이란❓DFS는 그래프나 트리를 탐색하는 방법 중 하나입니다. 시작 정점에서 출발하여 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법입니다. 마치 미로를 탐색할 때 한 방향으로 끝까지 가보는 것과 같습니다. [Algorithm] 효율적인 그래프 탐색: 자바로 구현한 DFS 알아보기 (1/2)이번 포스팅에서는 Java 알고리즘에서 필수적이라고도 말할 수 있는 DFS와 BFS에 대해서 알아보겠습니다. ..
문제설명입력 & 출력나의 풀이문제 접근 방법"백준 - 트리의 부모 찾기" 문제는 트리의 부모 노드를 찾는 문제입니다. 트리의 루트 노드는 항상 1이며, 루트 노드를 기준으로 2번 노드부터각 노드의 부모를 출력해야 합니다. 트리의 특징은 간선이 N-1개로 주어지며, 이는 사이클이 없고 모든 노드가 연결된 그래프를 뜻합니다.하나의 그래프에서 루트를 기준으로 트리를 구성하는 방법은 여러 가지가 존재할 수 있습니다. 저는 문제를 이해하기 위해 다음과 같은 트리 형태를 그려보았습니다. DFS 알고리즘을 사용하여 루트 1번부터 순회를 한다면, 1→6→3→5 순으로 내려가고, 다시 1로 돌아와서 4→2, 4→7 로 진행이 됩니다. 문제 접근트리 구성 : 연결정보는 방향성이 없이 주어지기 때문에 양방향 연결을 위한 ..
개요개발을 하다 보면 문자열이 비어있는지 검증해야 하는 경우가 자주 발생합니다. Java에서는 이를 위해 isEmpty()와 isBlank() 두 가지 메서드를 제공합니다. 이 두 메서드는 언뜻 보면 비슷한 기능을 하는 것처럼 보이지만, 실제 사용 시나리오에서는 중요한 차이점이 있습니다. 본 글에서는 두 메서드의 차이점을 정리하고자 합니다. isBlank() 메서드란❓Java 11부터 도입된 String 클래스의 메서드입니다.String str1 = ""; // trueString str2 = " "; // trueString str3 = "\t\n"; // trueString str4 = "hello"; // false 문자열이 비어있거나 공백 문자(whitespace..
개요ArrayList arrayList = new ArrayList();HashSet hashSet = new HashSet();HashMap hashMap = new HashMap(); Java에서 컬렉션을 사용할 때 위와 같이 구현체로 직접 선언하는 경우가 있습니다. 하지만 실제로는 인터페이스를 사용해 선언하는 것이 더 좋은 방법입니다. List list = new ArrayList();Set set = new HashSet();Map map = new HashMap(); 본 글에서는 이러한 차이점과 인터페이스를 사용해 선언해야 하는 이유에 대해 정리하고자 합니다. 주요 컬렉션 인터페이스와 구현체1. List 인터페이스List list = new ArrayList(); // 인터페이스로 선언List..