일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘 개념
- 백준 2261번
- 백준 1707번
- 백준 2504번
- 백준 2493번
- 백준 17608번
- 동적 프로그래밍(Dynamic Programming)
- 그리디 알고리즘(Greedy Algorithm)
- 백준 10000번
- 백준 2812번
- 분할 정복(Divide and Conquer)
- 백준 9012번
- 위상 정렬(Topological Sort)
- 큐(Queue)
- 다익스트라 알고리즘(Dijkstra Algorithm)
- 플로이드 워셜 알고리즘(Floyd-Warshall Algorithm)
- DFS & BFS
- 백준 21606번
- 스택(Stack)
- BFS(Breadth First Search)
- 위상 정렬(Topology Sort)
- DFS
- 이분 탐색(Binary Search)
- 그래프(Graph)
- 이분 그래프(Bipartite Graph)
- 트리(Tree)
- BFS
- 백준 1948번
- DFS(Depth First Search)
- 백준 18352번
- Today
- Total
목록알고리즘 (101)
Always Be Wise

DFS(Depth First Search)는 깊이 우선 탐색, 세로 검색, 수직 검색이라고도 한다. DFS는 트리의 리프에 도달할 때까지 아래쪽으로 내려가면서 검색하는 것을 우선하는 알고리즘을 의미한다. 리프에 도달해서 더 이상 검색할 곳이 없으면 부모 노드로 돌아가고 그 뒤 다시 자식 노드로 내려간다. 그런데 DFS는 노드를 방문 하는 순서에 따라 3가지 순회 방식을 갖는다. Preorder(전위 순회) [루트 - 왼쪽 자식 - 오른쪽 자식] 순으로 순회 순회 순서 : A -> B ->D -> E -> G -> H ->C -> F -> I Inorder(중위 순회) [왼쪽 자식 - 루트 - 오른쪽 자식] 순으로 순회 순회 순서 : D -> B -> G -> E -> H -> A -> C -> I -> ..

BFS(Breadth First Search)는 너비 우선 검색, 폭 우선 검색, 가로 검색, 수평 검색이라고도 한다. BFS는 트리의 낮은 레벨부터 왼쪽에서 오른쪽으로 검색하고, 한 레벨에서 검색을 마치면 그 다음 레벨로 내려가 검색을 이어가는 알고리즘을 의미한다. ▶ 관련 링크
▶ 문제 : https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net ##### 문제 ##### # 사과의 위치와 뱀의 이동경로가 주어질 때 이 게임이 몇 초에 끝나는지 계산하라. ##### 입력 ##### # 첫째 줄에 보드의 크기 N이 주어진다. (2 ≤ N ≤ 100) # 다음 줄에 사과의 개수 K가 주어진다. (0 ≤ K ≤ 100) # 다음 K개의 줄에는 사과의 위치가 주어지는데, 첫 번째 정수는 행, 두 번째 정수는 열 위치를 의미한다. # 사과의 ..
▶ 문제 : https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net ##### 문제 ##### # 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. # 이제 순서대로 K번째 사람을 제거한다. # 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. # 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. ##### 입력 ##### # 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) ##### 출력 ##### # 요세..
▶ 문제 : https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net ##### 문제 ##### # N장의 카드가 있다. # 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. # 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. # 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 ..
▶ 문제 : https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net ##### 문제 ##### # 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. # 명령은 총 여섯 가지이다. # push X: 정수 X를 큐에 넣는 연산이다. # pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. # size: 큐에 들어있는 ..

큐는 데이터를 일시적으로 저장하기 위해 사용하는 자료구조로서, 가장 먼저 입력한 데이터를 가장 먼저 출력하는 선입선출(FIFO: First In First Out) 방식을 따른다. 데이터의 입출력이 한쪽 끝에서 이루어지는 스택과 달리 큐는 데이터의 입출력이 양쪽 끝에서 이루어진다. ▶ 관련 링크 2021.11.18 - [알고리즘] - 큐 : 뱀(백준 3190번) 2021.11.18 - [알고리즘] - 큐 : 요세푸스 문제 0(백준 11866번) 2021.11.18 - [알고리즘] - 큐 : 카드2(백준 2164번) 2021.11.18 - [알고리즘] - 큐 : 큐2(백준 18258번)
▶ 문제 : https://www.acmicpc.net/problem/2812 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net ##### 문제 ##### # N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. ##### 입력 ##### # 첫째 줄에 N과 K가 주어진다. (1 ≤ K 0 and stack and stack[-1] < numbers[i]: stack.pop() k -= 1 stack.append(numbers[i]) print(''.join(stack[:N-K])) ▶ 관련 링크 2021.11.17 - [알고리..
▶ 문제 : https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net ##### 문제 ##### # 주어진 괄호열을 읽고 그 괄호값을 앞에서 정의한대로 계산하여 출력하는 것이다. # ‘()’ 인 괄호열의 값은 2이다. # ‘[]’ 인 괄호열의 값은 3이다. # ‘(X)’ 의 괄호값은 2×값(X) 으로 계산된다. # ‘[X]’ 의 괄호값은 3×값(X) 으로 계산된다. # 올바른 괄호열 X와 Y가 결합된 XY의 괄호값은 값(XY)= 값(X)+값(Y) 로 ..
▶ 문제 : https://www.acmicpc.net/problem/10000 10000번: 원 영역 x축 위에 원이 N개 있다. 원은 서로 교차하지 않는다. 하지만, 접할 수는 있다. 원으로 만들어지는 영역이 몇 개인지 구하는 프로그램을 작성하시오. 영역은 점의 집합으로 모든 두 점은 원을 교 www.acmicpc.net ##### 문제 ##### # x축 위에 원이 N개 있다. 원은 서로 교차하지 않는다. 하지만, 접할 수는 있다. # 원으로 만들어지는 영역이 몇 개인지 구하는 프로그램을 작성하시오. # 영역은 점의 집합으로 모든 두 점은 원을 교차하지 않는 연속되는 곡선으로 연결될 수 있어야 한다. ##### 입력 ##### # 첫째 줄에 원의 개수 N(1 ≤ N ≤ 300,000)이 주어진다. ..