본문 바로가기
728x90
반응형

자료구조_알고리즘16

알고리즘) 탐색 - 스택, 큐, 재귀함수, 팩토리얼 탐색 탐색은 많은 양의 데이터에서 원하는 데이터를 찾는 과정 대표적인 그래프 탐색 알고리즘에는 dfs와 bfs가 있다 굉장히 자주 등장하는 유형 스택 선입 후출 입구와 출구가 동일한 형태 먼저 입력된 자료가 나중에 출력된다 -> 박스를 쌓는다 삽입과 삭제가 주요 작업 파이썬은 리스트에서 append(), pop() 을 이용하여 쉽게 구현 가능 stack[::-1] -> 최상단 원소부터 stack -> 최하단 원소부터 큐 대기열 선입 선출 한 쪽은 입구 한 쪽은 출구인 형태 que는 list로도 기능은 구현가능하지만 비효율적 from collections import deque queue = deque() queue.append(원소) queue.popleft() queue.reverse() ## 역순으로.. 2021. 6. 2.
알고리즘) 구현 - 시뮬레이션, 완전탐색 구현 유형의 문제 초점이 구현에 맞추어져 있는 문제 풀이는 쉽지만 소스코드로 옮기기 어려운 문제 알고리즘은 간단한데, 코드가 길어진다 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제 문자열을 특정 기준에 따라 끊어 처리해야하는 문제 적절한 라이브러리를 찾아서 사용해야하는 문제 2차원 공간은 행렬의 의미로 사용된다 이중 for문을 사용 시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 사용된다 dx = [ 0, -1, 0, 1] dy = [1, 0, -1, 0] 현재 위치 x, y = 2, 2 for i in range(4) 한 칸이 1 x 1이고, 전체 크기가 N x N인 정사각형 공간 위에서 가장 왼쪽 위 좌표는 1,1 가장 오른쪽 아래 좌표는 N,N일 때, 공간 밖.. 2021. 6. 2.
알고리즘) 그리디(탐욕) 알고리즘 루트 노드부터 시작하여 매 순간의 가장 큰 값을 선택하는 알고리즘 -> 일반적 상황에서는 최적의 해를 보장할 수 없을 때가 많다 하지만 코테에서는 탐욕법을 사용하여 얻은 해가 최적의 해가 되는 상황에서 그리디를 추론할 수 있으면 됨 1. 거스름돈 문제 500원 100원 50원 10원짜리 동전이 무한히 존재한다고 가정하고 거슬러 주어야할 돈이 N원일 때, 거슬러줘야하는 돈이 항상 10의 배수일 때 동전의 최소 개수를 구하시오 => 그리디 알고리즘으로 가장 큰 화폐단위 부터 돈을 거슬러주면 된다 => 큰 단위가 작은 단위의 배수이기 때문 => 큰 단위가 작은 단위의 배수가 아니라면 그리디 알고리즘으로 풀 수 없다 => 거스름돈의 시간 복잡도는 O(K)(동전의 종류 개수에 영향을 받는다) 2. 1이 될 때 까.. 2021. 5. 31.
알고리즘) 성능평가 알고리즘의 성능평가 알고리즘 성능 평가에는 복잡도라는 개념이 사용된다 복잡도 계산복잡도 이론에서 나온 것으로 시간 복잡도와 공간 복잡도로 나뉜다 **시간 복잡도 알고리즘의 수행 시간 분석 *공간 복잡도 알고리즘의 메모리 사용량 분석 복잡도가 낮을수록 좋은 알고리즘 Big-O 표기법 다항식으로 표현된 성능에서 차수가 가장 큰 것만 남기는 것 무언가를 무한대로 시행했을때 가장 큰것만 고려해도 크게 차이가 없기 때문에 차수가 가장 큰 항만 남기므로 N^2 + 5N^2 + 100 => O(N^2) 으로 표현 제한시간이 1초인 문제일 경우, N의 범위가 500인 경우 : 최대 시간 복잡도가 O(N^3) N의 범위가 2000인 경우 : 최대 시간 복잡도가 O(N^2) N의 범위가 2,000인 경우 : 최대 시간 복.. 2021. 5. 30.
728x90
반응형