일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- til
- dbms
- 공개키 암호화
- 99클럽
- 자바의정석
- 코딩테스트
- javascript
- sql
- 코테
- python
- BFS
- JPA
- 가상컴퓨팅
- 암호학
- jsp
- 코딩테스트준비
- 항해99
- 생성자
- Queue
- 자료구조
- spring
- dfs
- Java
- 크루스칼
- generic class
- 알고리즘
- js
- Algorithm
- DB
- 개발자취업
- Today
- Total
목록computer science/Algorithm | Datastructure (16)
PLOD
순차 탐색(sequential Search)선형 탐색이라고도 불린다. 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법이다. 보통 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용한다 .적용리스트가 아무리 많아도 시간만 충분하다면 항상 원하는 원소를 찾을 수 있다는 장점이 있다. 순차 탐색은 이름처럼 순차로 데이터를 탐색한다는 의미이다. 정렬되지 않은 데이터나 작은 데이터 셋을 탐색해야 할 때 간단히 구현 가능하다.시간복잡도는 O(n)이다.ex) 순차탐색으로 이름 리스트에서 원하는 이름의 순서 찾기#sequential_searchdef sequential_search(n,target,array) : for i in range(n) : if array..
정렬(sorting)이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말한다. 프로그램에서 데이터를 가공할 때 오름차순이나 내림차순 등으로 대부분 어떤 식으로든 정렬해서 사용하는 경우가 많기에 정렬 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘 중 하나다. 정렬 알고리즘으로 데이터를 정렬하면 이진탐색(binary search)가 가능해진다. 파이썬에서 버블정렬, 선택정렬 알고리즘을 사용하는 것보다 sort()함수와 sorted()함수가 O(NlogN)의 시간 복잡도를 보장해주기 때문에 더 효율적이지만, 간혹 수기로 코딩테스트를 보거나 직접 정렬 알고리즘을 아는지 물어보는 경우가 있기 때문에 알고 있는 것이 좋다1. 선택 정렬(selection sorting)컴퓨터가 데이터를 정렬할..
1. 흐른 시간 계산 2시 5분에서 4시 1분이 되려면 몇 분이 흘러야 하는지를 어떻게 계산해 볼 수 있을까? 단순히 다음과 같이 2시 5분에서 시작하여 1분 단위로 시뮬레이션을 하며 60분이 되면 시간을 늘리고 분을 다시 0으로 맞추는 식으로 진행해볼 수 있다. hour, mins = 2, 5 elapsed_time = 0 while True: if hour == 4 and mins == 1: break elapsed_time += 1 mins += 1 if mins == 60: hour += 1 mins = 0 print(elapsed_time) 2. 흐른 날짜 계산 2월 5일에서 4월 1일이 되려면 몇 일이 흘러야 하는지를 어떻게 계산해 볼 수 있을까? 윤년이 아니라고 가정하고 2월 5일에서 시작하..
재귀란 어떤 사건이 자기 자신을 포함하고 있거나 또는 자기 자신을 사용하여 정의하고 있을 때를 의미한다. 재귀를 효과적으로 사용하면 무한한 값에 대한 정의 뿐만 아니라 프로그램도 간결하게 구할 수 있다.보통 큰 문제를 작은 부분 문제로 나눠서 풀 때 사용한다.(ex. 팩토리얼, 피보나치 같은 작은 규칙 → 큰 규칙)1. 기저 사례(재귀를 종료시킬 조건(재귀 깊이)) 2. 반복 작업 메인 로직 (재귀 호출을 위한 점화식)기저 사례는 재귀함수를 멈춰줘야 하기 떄문에 재귀 함수 가장 위에 있다. 메인 로직 같은 경우는 같은 일을 하는 함수이므로 점화식 같은 규칙을 추론해낼줄 알아야한다. factorial 구하기재귀를 사용한 예로 가장 먼저 음이 아닌 정수의 팩토리얼 값을 구하는 프로그램이 있다. 음이 아닌 ..
1. 최장 맨해튼 거리 맨해튼 거리는 x,y 평면의 두개의 점에서 거리를 최단 거리로 구하는 문제이다. 맨해튼 거리 문제의 의미는 결국 좌표평면 위헤서의 어떤 구현이라는 걸 보여주는 단어이기 때문에 맨해튼 거리로 거리를 측정하라는 표현에 우리는 문제를 풀면서 좌표평면의 개념을 떠올려야 한다 완전 탐색 주어지는 수는 4개이기 때문에 좌표는 두개 밖에 생성이 안된다. 실제로 가능한 경우의 수는 24가지 정도이다. a,b,c,d를 무작위로 배열 한뒤 중복되지 않도록 for ~ if ~ continue로 처리 하여 각 점의 x,y 값을 정하고, distance 값을 구하기 위해 abs 함수를 이용한다. 나온 dist 값들 중 최대값을 구하기 위해 max 함수를 사용한다. S = list(map(int, inpu..
자료구조란? - 일련의 동일한 타입의 데이터를 정돈하여 저장한 구성체를 의미 - 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러가지 구현방법들 - 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 - 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음 - 데이터 정돈 목적은 프로그램에서 저장하는 데이터에 대해 탐색 , 삽입 , 삭제 등의 연산을 효율적으로 수행하기 위해서 이다. 알고리즘이란? - 문제를 해결하는 방법을 순서대로 명확하게 기술한 것 - 알고리즘의 각 단계는 정확히 한가지 의미로 해석되어야 한다.(명확성) - 알고리즘의 모든 유효한 입력에 대해 올바른 해를 출력해야 한다.(정확성) - 유효한 입력이 주어지면 반드시 유한한 시간 내에 종료되어야 한다.(정지성) - ..