분류 전체보기
-
탐색 알고리즘 (DFS) DFS의 정의 Depth-First Search : 깊이 우선 알고리즘, 그래프의 깊은 노드를 우선적으로 탐색하는 알고리즘이다. 때문에 DFS를 이해하려면 그래프와 그래프 탐색에 관한 부분을 알아야한다. + 스택(stack) 흔히 미로 탐색으로 비유한다. 막다른 길에 도달할때 까지 한쪽방향을 탐색하다가, 끝을 보면 다시 갈림길로 돌아와서 다른 길을 탐색하는 방법이다. 완전탐색의 일종이다. DFS의 장점 현재 탐색중인 노드들만 기억하기 때문에 메모리 사용이 적고, 당연한 이야기지만 찾으려는 노드가 깊을 경우에 BFS보다 빠르게 찾을 수 있다. DFS 단점 해가 없는 경로를 탐색하는 경우에도 경로가 끝날때 까지 탐색한다. (이를 방지하기 위해 조건을 지정하고 원래 위치로 되돌아오는 ..
DFS (깊이 우선 탐색) , BFS (너비 우선 탐색)탐색 알고리즘 (DFS) DFS의 정의 Depth-First Search : 깊이 우선 알고리즘, 그래프의 깊은 노드를 우선적으로 탐색하는 알고리즘이다. 때문에 DFS를 이해하려면 그래프와 그래프 탐색에 관한 부분을 알아야한다. + 스택(stack) 흔히 미로 탐색으로 비유한다. 막다른 길에 도달할때 까지 한쪽방향을 탐색하다가, 끝을 보면 다시 갈림길로 돌아와서 다른 길을 탐색하는 방법이다. 완전탐색의 일종이다. DFS의 장점 현재 탐색중인 노드들만 기억하기 때문에 메모리 사용이 적고, 당연한 이야기지만 찾으려는 노드가 깊을 경우에 BFS보다 빠르게 찾을 수 있다. DFS 단점 해가 없는 경로를 탐색하는 경우에도 경로가 끝날때 까지 탐색한다. (이를 방지하기 위해 조건을 지정하고 원래 위치로 되돌아오는 ..
2021.06.22 -
스택(Stack) 선입후출의 특징을 가진 알고리즘이다. (흔히 박스쌓기에 비유) 컴퓨터 내부에서 재귀함수의 구현은 스택으로 이루어진다. Python에서 스택을 사용할때는 특별한 구현 필요없이, .append() 함수와 .pop() 만을 사용하면 그대로 스택을 구현할 수 있다. Python - stack stack = [] stack.append(3) stack.append(4) stack.pop() 큐(Queue) 선입선출의 특징을 가졌다. (흔히 줄서기에 비유) 삽입되는 곳을 front 제거되는곳을 back 이라고 한다. BFS(너비 우선 탐색) 에 유용하게 사용된다. deque을 append 함수만 추가하고, popleft()로만 삭제하면 큐이다. 덱(Deque) 스택과 큐의 장점을 모두 갖고있다. ..
스택, 큐, 덱 (stack, queue, daque)스택(Stack) 선입후출의 특징을 가진 알고리즘이다. (흔히 박스쌓기에 비유) 컴퓨터 내부에서 재귀함수의 구현은 스택으로 이루어진다. Python에서 스택을 사용할때는 특별한 구현 필요없이, .append() 함수와 .pop() 만을 사용하면 그대로 스택을 구현할 수 있다. Python - stack stack = [] stack.append(3) stack.append(4) stack.pop() 큐(Queue) 선입선출의 특징을 가졌다. (흔히 줄서기에 비유) 삽입되는 곳을 front 제거되는곳을 back 이라고 한다. BFS(너비 우선 탐색) 에 유용하게 사용된다. deque을 append 함수만 추가하고, popleft()로만 삭제하면 큐이다. 덱(Deque) 스택과 큐의 장점을 모두 갖고있다. ..
2021.06.16 -
그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘은 "매 선택에서 당장 좋은것만을 선택해 나가는 방법"을 뜻한다. 특정 기준에 따라서 좋은 것을 선택해야하는 알고리즘이기 때문에 문제에서 어느정도 제시해준다. 그리고 좋다, 나쁘다의 기준을 세워야하기 때문에 정렬 알고리즘과 섞여서 나오는 문제들이 많다. 간단한 예제 (거스름 돈) 그리디 알고리즘을 대표하는 문제로 '거스름 돈' 문제가 있다. 자판기에 거스름돈을 배출해야 하는데 , 자판기에는 500, 100, 50, 10원짜리가 무수히 존재한다. 이때 거슬러줄 최소 동전의 개수를 구하라. (단, 거스름 돈은 항상 10의 배수이다.) 이러한 문제가 있다면, 무조건 큰 단위의 동전(500원)으로 최대한 거슬러주고, 그 다음 가능한 큰 단위의 동전(..
그리디 알고리즘 (Greedy Algorithm) , 탐욕그리디 알고리즘(Greedy Algorithm) 그리디 알고리즘은 "매 선택에서 당장 좋은것만을 선택해 나가는 방법"을 뜻한다. 특정 기준에 따라서 좋은 것을 선택해야하는 알고리즘이기 때문에 문제에서 어느정도 제시해준다. 그리고 좋다, 나쁘다의 기준을 세워야하기 때문에 정렬 알고리즘과 섞여서 나오는 문제들이 많다. 간단한 예제 (거스름 돈) 그리디 알고리즘을 대표하는 문제로 '거스름 돈' 문제가 있다. 자판기에 거스름돈을 배출해야 하는데 , 자판기에는 500, 100, 50, 10원짜리가 무수히 존재한다. 이때 거슬러줄 최소 동전의 개수를 구하라. (단, 거스름 돈은 항상 10의 배수이다.) 이러한 문제가 있다면, 무조건 큰 단위의 동전(500원)으로 최대한 거슬러주고, 그 다음 가능한 큰 단위의 동전(..
2021.06.13 -
문제 분류 : 완전탐색 Lv.2 생각 종이에 몇개 그려보면서 점화식을 세워보았다. yellow = (width -2) * (height - 2) brown = (width * height) - yellow 이걸 통해서 딱 떨어지는 어떤 식을 도출해 내지는 못했다. 그래서 width와 height에 값을 계속 바꾸어 대입해보면서 위 식에 부합하는지 확인하는 방법으로 코드를 짰다. 이때 범위가 중요하다고 생각하는데, 문제에서 보면 yellow의 최대 범위는 2,000,000이고, brown은 5,000이다. 가장 width가 길어질때는 height이 3칸이면서 동시에 brown의 최댓값일때일 것이다. 대략적으로 계산해보자면, brown은 맨 위, 맨 아래 두줄로 이루어져있다. 그러므로 나누기 2를 해주면 최..
[프로그래머스] (Python) - 카펫문제 분류 : 완전탐색 Lv.2 생각 종이에 몇개 그려보면서 점화식을 세워보았다. yellow = (width -2) * (height - 2) brown = (width * height) - yellow 이걸 통해서 딱 떨어지는 어떤 식을 도출해 내지는 못했다. 그래서 width와 height에 값을 계속 바꾸어 대입해보면서 위 식에 부합하는지 확인하는 방법으로 코드를 짰다. 이때 범위가 중요하다고 생각하는데, 문제에서 보면 yellow의 최대 범위는 2,000,000이고, brown은 5,000이다. 가장 width가 길어질때는 height이 3칸이면서 동시에 brown의 최댓값일때일 것이다. 대략적으로 계산해보자면, brown은 맨 위, 맨 아래 두줄로 이루어져있다. 그러므로 나누기 2를 해주면 최..
2021.06.12 -
문제 분류 : 완전탐색 Lv.2 Code(python) from itertools import permutations as pm def prime(n) : if (n < 2) : return False for i in range(2, int(n**0.5) + 1) : if (n % i ==0) : return False return True def check(numbers) : numbers = list(numbers) cnt = 0 for i in numbers : if prime(i) : cnt += 1 return cnt def get_permutations(numbers): max_len = len(numbers) numbers = list(numbers) int_nb = list(map(int,..
[프로그래머스] (Python) - 소수 찾기문제 분류 : 완전탐색 Lv.2 Code(python) from itertools import permutations as pm def prime(n) : if (n < 2) : return False for i in range(2, int(n**0.5) + 1) : if (n % i ==0) : return False return True def check(numbers) : numbers = list(numbers) cnt = 0 for i in numbers : if prime(i) : cnt += 1 return cnt def get_permutations(numbers): max_len = len(numbers) numbers = list(numbers) int_nb = list(map(int,..
2021.06.12 -
Picker View PikcerView는 슬롯머신 형태이며 Wheel을 돌려서 데이터를 선택할 수 있는 기능을 제공한다. Date picker 와 Picker view는 비슷한 형태와 기능을 갖지만 구현할때는 큰 차이점이 있다. Date picker는 형태만 잡아주면 알아서 데이터를 가져오지만, picker view는 개발자가 직접 대부분을 구현해야한다. pickerView는 Delegate, Datasource를 지정해주어야한다. Datasource func numberOfComponents(in pickerView: UIPickerView) -> Int { return () } // 나타낼 돌림판의 개수(components)리턴 func pickerView(_ pickerView: UIPickerV..
(iOS) UIControl - Picker ViewPicker View PikcerView는 슬롯머신 형태이며 Wheel을 돌려서 데이터를 선택할 수 있는 기능을 제공한다. Date picker 와 Picker view는 비슷한 형태와 기능을 갖지만 구현할때는 큰 차이점이 있다. Date picker는 형태만 잡아주면 알아서 데이터를 가져오지만, picker view는 개발자가 직접 대부분을 구현해야한다. pickerView는 Delegate, Datasource를 지정해주어야한다. Datasource func numberOfComponents(in pickerView: UIPickerView) -> Int { return () } // 나타낼 돌림판의 개수(components)리턴 func pickerView(_ pickerView: UIPickerV..
2021.06.02