본문 바로가기
728x90

알고리즘4

<PART 2> 정렬 정렬:데이터를 특정한 기준에 따라서 순서대로 나열하는 것 데이터를 가공할 때 오름차순, 내림차순 등으로 대부분 어떤 식으로든 정렬해서 사용하는 경우가 많기에 정렬 알고리즘은 프로그램 작성할 때 가장 많이 사용되는 알고리즘 중 하나입니다. 정렬 알고리즘으로 데이터를 정렬하면 이진 탐색이 가능해집니다. 정렬의 종류가 많지만 선택정렬, 삽입정렬, 퀵정렬, 계수정렬만 적겠습니다. - 선택 정렬 데이터가 무작위로 있을 때, 가장 작은 데이터를 맨 왼쪽 데이터와 자리를 교환합니다. 그다음은 맨 왼쪽 데이터를 제외한 숫자 중에서 가장 작은 값과 그 다음 왼쪽의 값을 서로 바꿉니다. 이 과정을 반복합니다. 위는 저의 방법, 아래는 책의 방법입니다. 저는 맨왼쪽이 최솟값이면 그대로 두고 아니라면 temp를 두어서 바꿔주.. 2022. 11. 5.
<PART 2> DFS/BFS - DFS (Depth-First Search, 깊이 우선 탐색) 그래프에서 깊은 부분을 우선적을 탐색하는 알고리즘입니다. 즉 최대한 멀리있는 노드부터 탐색하는 방법입니다. 여기서 그래프를 표현하는 방법이 2가지가 있습니다. 1. 인접 행렬: 2차원 배열로 그래프의 연결 관계를 표현하는 방식 2. 인접 리스트: 리스트로 그래프의 연결 관계를 표현하는 방식 대략적으로 설명하면 ex) (0) | 7 |5 (1) (2) 형태의 그래프가 존재한다고 가정합니다. 노드 0 1 2 0 0 7 5 1 7 0 무한 2 5 무한 0 인접행렬은 2차원 배열로 각 노드가 연결된 형태로 기록하는 방식입니다, 연결되지 않았을 경우는 무한의 비용이라고 작성합니다. ex) INF = 999999999 #무한의 비용 선언 graph .. 2022. 11. 5.
<PART2> 스택/큐/재귀함수 탐색: 많은양의 데이터 중에서 원하는 데이터를 찾는 과정 대표 탐색 알고리즘인 DFS/BFS를 이해하려면 기본 자료구조인 스택,큐,재귀 함수에 대한 이해가 전제되어야 합니다. 자료구조: 데이터를 표현하고 관리하고 처리하기 위한 구조 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성됩니다. -삽입(push): 데이터를 삽입한다. -삭제(pop): 데이터를 삭제한다. push를 할 때는 오버플로우, pop을 할 때는 언더플로우를 조심해야합니다. - 스택 (Stack) 선입후출 또는 후입선출의 구조이다. LIFO(Last in First Out)라고도 한다. 파이썬 코드로 표현하면 다음과 같다. append와 pop자체가 서로 맨 뒤쪽 데이터를 push,pop하는 것이기 때문에 스택은 별도.. 2022. 11. 4.
<PART 2> 그리디 예제 큰 수의 법칙 n,m,k가 있습니다. n은 배열의 원소 갯수, m은 더하는 횟수, k는 연속한 수가 k번 초과할 수 없음을 의미합니다. 이를 가지고 원소들을 더해서 가장 큰수를 만드는 것이 목적입니다. ex) n=5이면 2,4,5,4,6로 원소 5개를 주고 m=8, k=3이라면 6+6+6+5+6+6+6+5 =46이 됩니다. 입력예시 5 8 6 2 4 5 4 6 출력 예시 46 1 2 3 4 5 6 7 8 9 10 11 12 N, M, K = map(int,input().split()) a = sorted(list(map(int,input().split()))) cnt = 0 a_sum = 0 for i in range(M): if cnt == K: #k초과지만 cnt가 k가 되면 이미 k수만큼.. 2022. 9. 28.
728x90