일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비동기
- codestates
- 자바스크립트
- REACT
- node.js
- execution context
- context switching
- 컴퓨터공학
- python algorithm
- react 기초
- 알고리즘
- 개발공부
- 자바
- 운영체제
- typeScript
- Computer Science
- 코드스테이츠
- algorithm
- 프로그래머스
- 파이썬 알고리즘 인터뷰
- OS
- 파이썬
- useState
- Operating System
- JavaScript
- 자료구조
- 글또
- Python
- java
- Zerobase
- Today
- Total
목록Computer Science/Algorithm & Data Structure (15)
Back to the Basics
GCD(Greatest Common Divisor) 최대 공약수 1. 문제 M개의 A 빼빼로와 N개의 B 빼빼로를 k명의 직원에게 공평하게 나누어 주는 방법을 구하는 함수를 작성하는 문제이다. 예를 들어 A빼빼로가 4개 B빼빼로가 8개인 경우, 직원이 2명이라면 A 뺴빼로를 2개, B를 4개씩 공평하게 나눠준다. 입력 : 인자 M (1
Rock Paper Scissors 1. 문제 이 문제는 가위바위보를 n 판 했을 때 한 사람이 낼 수 있는 모든 경우의 수를 구하는 문제이다. R=Rock , P=Paper, S=Scissors라고 할 때 4판을 했을 때 트리 구조로 구성을 해보면 아래와 같다. 중학생 때 배웠던 수학을 떠올려보자, 한 판을 할 때마다 R, P, S 3개 중 중복을 허용하여 뽑는 경우의 수 3Π\PiΠ1과 같다. 바로 중복순열이다. 중복순열은 자료구조 DFS를 이용하여 전체를 순환하는 방식을 사용한다. DFS에 대한 개념적인 내용은 Section2의 첫 부분인 자료구조에서 이미 정리한 바가 있으니 참고하자 자료구조/알고리즘] Graph - BFS , DFS 입력 : depth 또는 없음 출력 : 2차원 배열 조건 : 여..
단일 연결 리스트 자료구조 연결 리스트는 실행 시간에 메모리를 할당하거나 해제할 수 있는 동적 자료구조이다. 이번 포스팅에서는 단일 연결 리스트의 개념과 단일 연결 리스트 연산들의 구현에 대해 간단하게 정리해 보았다. 참고로 사용한 언어는 python이다. 1. 연결 리스트의 개념 연결 리스트 자료구조는 배열처럼 선형 자료구조에 속하지만 인덱스로 접근하는 것이 아닌, 각 노드가 다음 노드에 대한 참조를 갖는 구조이다. 배열처럼 자료들의 메모리가 선형적으로 저장되지 않고 흩어져(?) 있지만 각 노드의 참조를 갖고 있기 때문에, 그 참조를 따라 다음 노드로 접근할 수 있다. 아래의 그림을 보면 쉽게 이해할 수 있다. 각 노드는 데이터를 담는 data field와 다음 노드를 참조하는 pointer field..
그래프를 순회하는 방법 중 가장 일반적인 너비 우선 검색과 깊이 우선 검색에 대해 공부한다 1. 너비 우선 방법 (BFS , Breadth-First Search) 그림출처 위의 그림과 같이 그래프에서 연결된 노드와 해당 노드들 간의 간선을 순서대로 검색하는 알고리즘을 말한다. 한 단계씩 내려가면서 해당 노드와 같은 레벨에 있는 노드들을 먼저 순회한다. 이진트리검색의 차수 우선 순회와 비슷한 개념이다. 구현을 위해서는 Queue를 필요로 한다. 시간 복잡도 O(V+E) : V는 정점의 개수이고 E는 간선의 개수이다. 전체 그래프를 순회하기 위해 모든 정점과 간선을 방문해야 하기 때문 아래의 무지향성 그래프의 예와 함께 코드를 분석해보자 탐색 순서는 a → b → d→ c →e 이다. 아래 코드에서 ver..
이전에 파이썬 공부를 하면서 [빅오,자료형] 에 대해 정리를 한적이 있다. 빅오가 무엇이고 빅오 표기법의 종류, 상한과 최악에 대한 글을 작성하였다. 이번 포스팅 에서는 빅오 표기 규칙과 시간 복잡도를 구하는 방법에 대해 공부해 정리해보겠다. 빅오를 표기하기 위해서는 알고리즘의 처리해야 할 데이터의 수 n에 대한 연산횟수 f(n)을 구하여 빅오를 구한다. 각 알고리즘의 연산 획수 함수끼리 비교하지 않고 빅오를 계산 하는 이유는 데이터의 수가 많아짐에 따른 연산횟수의 증가 정도가 더 중요하기 때문이다. 빅오 표기법 규칙 계수 법칙 : "상수를 제거하라" 상수 k >0 , f(n)이 O(g(n)) 이면 kf(n)은 O(g(n))이다. n이 충분히 크기 때문에 상수항을 무시해도 되기 때문. 다음의 경우를 비교..
자료구조 Graph에 대해서 알아아보고, 이를 어떤 방식으로 사용하는지 알아본다. 코드스테이트 Lesson 내용의 일부와 윤성우의 열혈 자료구조 책을 참고하였다. 1. Graph Graph 란 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조이다. 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다 간접적인 관계가 있는 경우 몇 개의 점과 전에 걸쳐 이어진다. 하나의 점 : 정점 vertex라고 표현 하나의 선 : 간선 edge라고 표현 Graph의 종류 무방향 그래프(Undirected Graph) 연결 완계에서 방향성이 없는 그래프를 말한다. 방향 그래프(Directed Graph) 간선에 방향 정보가 포함되어있는 그래프. digraph라고도 부른다. 완전 그래프(Comp..
자료구조 Tree에 대해서 알아아보고, 이를 어떤 방식으로 사용하는지 알아본다. 코드스테이트 Lesson 내용의 일부와 윤성우의 열혈 자료구조 책을 참고하였다. 1. Tree Tree란 데이터를 순차적으로 나열시킨 선형구조가 아닌, 하나의 데이터 뒤에 여러 개의 데이터가 있는 비선형 구조이다. 단방향 그래프이며 계층적 구조를 갖고 사이클이 없다. 용어 정리 깊이 (depth) : 루트로부터 하위 계층의 특정 노드까지의 깊이(depth)를 표현한다. root node는 깊이가 0이고 밑으로 갈수록 Level 1, Level 2로 커진다. 레벨 (Level) : 같은 깊이를 갖고있는 노드를 묶어서 레벨로 표현한다. 높이 (Height) 리프 노드를 기준으로 루트까지의 높이 (height) 트리의 최고 레벨을..
자료구조 Queue에 대해서 알아아보고, 이를 어떤 방식으로 사용하는지 알아본다. 코드스테이트 Lesson 내용의 일부와 윤성우의 열혈 자료구조 책을 참고하였다. Achievement Goals Queue 자료구조에 대해 이해한다 Queue 자료구조가 가진 특징을 학습한다. Queue 자료구조를 사용하기 적합한 상황을 이해한다 다른 자료구조 와의 차이점을 이해하기 위해 자료 구조 내부를 직접 구현한다. Queue 자료구조를 배열로 대체해볼 수 있다. 1. Queue Queue 란 Queue도 Stack과 비슷하게 데이터를 순서대로 쌓는 자료구조이다. Stack과는 다르게, 먼저 들어온 건이 먼저 나오는 구조이다. 선입선출 , Firts-In-First-Out (FIFO) OR Last-In-Last-Ou..