알고리즘간단하게 문제 해결 순서라는 의미문제를 해결하기 위한 것으로, 명확하게 정의하고 순서가 있는 유한 개의 규칙으로 이루어진 집합생성단계설계 -> 표현/기술 -> 정확성 검증 -> 효율성 분석순차적(concatenation) 구조여러 문장(프로세스)이 순차적으로 실
후입선출, LIFO(Last In First Out)선입선출, FIFO(First In Frist Out)Stack, Queue 합친 기능자료 구조의 맨 앞, 맨 뒤에 데이터 추가, 삭제 작업 모두 가능Queue보다 빠른 소요시간queue의 경우 데이터의 추가, 삭제
그래프 자료구조의 일종많은 양의 데이터르 관리하기 위한 목적으로 사용ex) 데이터베이스 시스템, 파일 시스템하나 이상의 노드로 구성된 유한 집합원소 가운데 단 하나의 루트 노드최상단 노드루트 노드를 제외한 노드는 n개의 서로 분리된 부분집합으로 나누어짐단말 노드최하단
정점의 집합과 간선의 집합으로 이루어져있다간선의 방향성에 따라 무방향과 방향 그래프로 나뉜다정점을 있는 선이 간선간선들에 값을 줄 수 있다비용이라 칭하며 간선들에 비용이 있는 그래프를 가중그래프(가중치그래프)라 한다
Priority Queue(우선순위 큐)를 구현하기 위하여 사용하는 자료구조 중 하나
어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라 한다코드의 간결화 및 변수 사용 최소화 장점자기 자신을 사용하여 정의ex) n! = n \* (n-1)! 메서드를 계속해서 맞물려 호출하는 경우직접 재귀자기 자신의 메
이름, 학번, 키 등 핵심 항목(key)의 대소 관계에 따라 데이터 집합을 일정한 순서로 줄지어 늘어서도록 바꾸는 작업오름차순(ascending order), 내림차순(descending order) 등내부 정렬(internal sorting) 정렬할 모든 데이터를 하
선형 검색무작위로 늘어놓은 데이터 모임에서 검색이진 탐색일정한 규칙으로 늘어놓은 데이터 모임에서 빠른 검색해시법추가 삭제가 자주 일어나는 데이터 모임에서 아주 빠른 검색을 수행체인법 - 같은 해시 값의 데이터를 선형 리스트로 연결오픈 주소법 - 데이터를 위한 해시 값이
기수를 이용해 수를 나타냄표현8진수0으로 시작16진수0x 또는 0X로 시작두 경우 제외 10진수로 간주2~36진수까지 정수 0~9와 알파벳 A~Z로 이용해 표기 가능수를 나타내는 데 기초가 되는 수ex) 10진법의 경우 0~9까지의 정수가 기수사물의 순서를 나타내는 수
검색과 저장이 아주 유용한 구조key 와 value 쌍으로 데이터 저장임의의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수python의 경우 딕셔너리dic + 반복문
하나의 큰 문제를 여러 개의 공통되는 작은 문제로 나누어서 작은 문제의 정답들을 결합하여 알고리즘을 푸는 과정규칙을 찾는 문제Bottom Up작은 문제에서 큰 문제로 반복문 호출Top Down큰 문제에서 작은 문제로 재귀 호출피보나치(Fibonacci) 수열
모든 노드를 방문하는 최단 경로출발점이 정해져있지 않고 모든 노드들이 방문만 되면 된다포인트마다 거쳐가는 경우를 생각해야 한다이 때 포인트가 출발, 도착인 행과 열은 제외하고 나머지 포인트를 밑에 공식으로 비교x-> y 비용과 x -> (거쳐가는 포인트) + (거쳐가는
전체가 아닌 현재 상태에서 최선의 선택을 하는 알고리즘전체 탐색보다 빠르지만 반드시 정답을 도출하지는 않는다탐욕법 사용할지 안할지 판단이 중요각 부분에서의 선택이 다른 부분에게 영향을 주지 않는 경우서로간 배수인 경우에 탐욕법 적용 가능ex) 400원, 200원 : 서
각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 데이터를 저장하는 자료 구조데이터의 추가, 삭제로 index들이 대규모로 변경되어 성능이 감소하는 경우를 없애 성능을 유지해줌nodedatanext(pointer)head첫번째 node
머릿속에 알고리즘을 소스 코드로 바꾸는 과정피지컬을 요구하는 문제프로그래밍 언어의 문법에 능숙하며 코드 작성 속도가 빠른 사람을 피지컬이 좋다라 함피지컬이 부족하거나 lib사용 경험이 부족할수록 풀기 어렵다감은 오는데 코드로 옮기지 못함두 가지 모두 구현이 핵심이 되는
재귀로 문제를 푸는데 있어 return과 exit의 차이점이 궁금해 찾아봤다return, exit() 모두 프로그램 종료를 의미return은 함수의 종료, exit()는 함수의 관계없이 프로그램 종료를 의미
백준 26170을 시도했다 뭔가 이상함을 느끼며 실패했고 백준 25418번을 푸는데 있어 이상함이 정확하다 판단했고 구체적으로 DFS, BFS의 구현에 대해 집고 넘어가기 위해 글을 작성한다이상함의 이유는 2차원 배열 형태에서 거리를 탐색하는데 있어 BFS와 DFS의
백준 1010 문제를 풀며 의문이 들어 기록처음 문제를 보며 최대 N개의 다리를 놓을 수 있으며 모든 경우의 수를 찾는 것이고 다리가 겹치는 부분은 존재하지 않아야 한다는 것은 알고 있었다때문에 재귀를 이용해 숫자를 하나씩 늘리며 앞 숫자보다 크지 않는 경우의 조합을