[알고리즘] 깊이 우선 탐색 ( Depth First Search : DFS )
·
알고리즘/풀이 힌트
깊이 우선 탐색 : 탐색을 할 때 깊이를 우선으로 하여 탐색을 수행하는 탐색 알고리즘 ​ ' 맹목적으로 각 노드를 탐색 ' 할 경우 주로 사용하는 탐색 기법으로, 모든 노드를 방문하고자 하는 경우 ( 완전 탐색) 사용 너비 우선 탐색 ( BFS) 보다 지나온 경로를 쉽게 파악할 수 있다는 장점이 있다. 또 층별로 모든 자식 노드를 저장해야 할 필요가 없기 때문에 BFS에 비해 메모리 요구량이 훨씬 적다 ​ ※ 어느 방향으로 검색할지 확률에 따라 속도가 많이 빨라질 수도 있고 느려질 수도 있다.(확률 의존) ​ 깊이 우선 탐색을 수행하기 위해서 필요한 준비물은 Stack이다. 이다. ※컴퓨터는 구조적으로 스택의 원리를 사용하기 때문에 재귀 함수를 사용하여 구현이 가능하다. ​ 이제 어떤 식으로 정렬이 이루..
[알고리즘] 너비 우선 탐색( Breadth First Search, BFS)
·
알고리즘/풀이 힌트
너비 우선 탐색 : 탐색을 할 때 너비를 우선으로 하여 탐색을 수행하는 탐색 알고리즘 ​ ' 맹목적인 탐색 ' 을 하고자 할 때 사용할 수 있는 탐색 기법으로 ' 최단 경로 ' 를 찾아준다는 점에서 최단 길이를 보장할 때 많이 사용 ​ ※ 시작점과 거리가 멀수록 탐색이 느려진다. 하지만 근처에 있을 경우 빠르게 탐색 가능하다. ※ 맹목적인 탐색 : 이미 정해진 순서에 따라 상태 공간 그래프를 점차 형성해 가면서 탐색하는 방법을 말한다. ​ 너비 우선 탐색을 하기 위해서 필요한 준비물은 Queue ( 큐 ) 이다. ​ 우선 어떤식으로 정렬이 이루어 지는지 보자면! 다음과 같이 1 2 3 4 5 가 서로 연결되어 있다고 보았을 때 너비 우선 탐색을 해보자면 시작 노드 ( Start Node ) 를 큐에 삽입..
[알고리즘] Queue ( 큐 )
·
알고리즘/풀이 힌트
Queue : 데이터를 일시적으로 저장하기 위한 자료구조 가장 먼저 들어온 데이터가 가장 먼저 나가는 자료구조 ( FIFO : First In First Out) ex) 은행 창구 : 먼저 번호표를 뽑은 사람이 먼저 서비스를 받는다. Queue를 코드로 구현해보자면 import java.util.LinkedList; public class QueueEx { public static void main(String[] args) { Queue s = new Queue(); for(int i = 1; i
[알고리즘] Stack ( 스택 )
·
알고리즘/풀이 힌트
Stack : 데이터를 일시적으로 저장하기 위한 자료구조 가장 먼저 들어온 데이터가 가장 마지막에 나가는 자료구조 ( FILO : First In Last Out) ex) 택배 상하차 : 택배차에 택배를 처음 넣은 것이 제일 마지막에 나온다. ​ Stack을 코드로 구현해보자면 import java.util.ArrayList; public class StackEx { public static void main(String[] args) { // TODO 자동 생성된 메소드 스텁 Stack s = new Stack(); for(int i = 1; i
[알고리즘] 백준 10989번 문제_수 정렬
·
알고리즘
수 정렬 : https://www.acmicpc.net/problem/10989 ================================== 풀이 ==================================== 계수 정렬 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(Sy..
[알고리즘] 백준 1431번 문제_시리얼 번호
·
알고리즘
시리얼 번호 정렬 :https://www.acmicpc.net/problem/1431 ================================== 풀이 ==================================== C++ 함수 사용 #include // C++ 헤더 #include // STL 라이브러리 -> sort() 함수가 정의되어있음 #include #include using namespace std; string a[20000]; int n; int getSum(string a) { int n = a.length(), sum = 0; for (int i = 0; i < n; i++) { if (a[i] - '0' = 0) { sum += a[i] - '0'; } } return sum; }..
[꿀팁] 구글에 티스토리 등록하기
·
꿀팁 공유
네이버 웹마스터 도구에 이어서 구글에 나의 티스토리가 좀 더 잘 나오게 하는 방법을 알아보자! 바로 구글 웹마스터 도구를 사용하는 방법이다! 지난번 네이버 웹마스터 도구에 비해 훨씬 간편한 방식으로 등록할 수 있다. 바로 알아보자! 0. 준비물 필요한 준비물로 구글 계정이 필요하다! 1. 플러그인 추가 티스토리 관리 페이지로 이동하여서 플러그인을 클릭! 많고 많은 플러그인 중 구글 서치 콘솔이라는 것을 클릭하자! 이어서 계정 연결하기를 클릭! 그러면 구글 로그인을 하라는 창이 나올 텐데 계정이 있다면 선택! 없다면 다른 계정 사용을 통해서 구글 로그인을 해준다. 홀리 몰리! 적용이 끝나버렸다. 하지만 이렇게 쉽다면 내가 굳이 설명을 하지 않을 것이다. 여기서 추가로 " 서치 콘솔 바로가기 " 을 눌러 들..
[알고리즘] 백준 1181번 문제_단어 정렬
·
알고리즘
단어 정렬 : https://www.acmicpc.net/problem/1181 ================================== 풀이 ==================================== C++ 함수 사용 string a[20000]; int n; bool compare(string a, string b) { if (a.length() b.length()){ return 0; } // 길이가 같은 경우 else { return a > n; // n 입력 for (int i = 0; i..