잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록
목록Study/Algorithm (6)
현록의 기록저장소
해시 함수. 어떤 입력값을 넣으면, 고유한 과정을 거치게하여 해시값(임의의 길이의 데이터)을 뱉는 함수. 우리가 아는 암호화 방식인 SHA512 등도 결국 해시 함수.. 해시 함수(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 해시 함수에 의해 얻어지는 값은 해시 값, 해시 코드, 해시 체크섬 또는 간단하게 해시라고 한다. https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98 해시 함수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 이름을 0~15 사이의 정수값으로 매핑하는 해시 함수의 예. “John Smith”와 “Sandra Dee”라는 두 키 사이에 충돌이 존..
이미 Quick Sort와 Merge Sort를 살펴봤지만, [Study/Algorithm] - 정렬 - 퀵 정렬 [Study/Algorithm] - 정렬 - 합병 정렬 시간복잡도를 보는 겸 버블 정렬도. https://ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC 거품 정렬 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 무작위 배열수의 거품 정렬 예 거품_정렬 편집된 색상 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간 복잡도가 O ( n 2 ) {\displaystyle O(n^{2})} 로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 ..
123 456 789 암호 패턴. 이미 사용한 번호를 다시 사용할 수 없음. 사용되지 않은 번호를 건너뛰어 매길 수 없음. (1-5-9-6-3-7은 가능하지만, 1-9-6-3처럼 1-9에서 사용하지 않은 5를 건너뛸 수 없음.) 각 직선(1-5,5-9,9-6,6-3,3-7)이 만나는 다른 직선의 수를 반환. 문제의 형태 때문에, getX와 getY에서 123456789를 쓰게 되는 것. 이와 상관없이 x, y 값만 주어져도 아래의 함수 계산은 항상 유효함. 1차 함수는 모두 y = a*x + b의 형태로 나타낼 수 있음. y - yj = s(x - xj) 에서, y = s*x -s*xj+yj 가 될 수 있기 때문. class Line { boolean isLinearX; boolean isLinearY;..
정규표현식은 문자열에서 해당 조건에 만족하는 부분을 찾아 활용할 수 있는 방법이다. Problem Solving에서 많은 문자열 문제 풀이에 써먹었었다. https://ydeer.tistory.com/tag/정규표현식 시간 날 때마다 틈틈이 유용한 문법을 정리할 생각으로 만든 포스트. https://regexper.com/ Regexper regexper.com 정규표현식을 생성하면 어떤 구조로 동작하는지 그림으로 보여준다. 기본적으로 JavaScript 스타일이라고 명시되어 있지만, 정규표현식은 형식을 거의 통일시키기 때문에 상관없이 활용 가능. 표현을 만들 때 눈으로 한 번 간단하게 검토 가능. https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegE..
퀵 정렬 알고리즘을 공부하면서 직접 코드로 짜봤었는데, [Study] - 정렬 - 퀵 정렬 배열의 크기가 꽤 크면, 라이브러리에서 제공해주는 정렬과 시간차이가 꽤 나서 좀 조사해보니, 라이브러리에서의 배열은 정수 배열은 합병 정렬(Merge Sort)를, 실수 배열은 퀵 정렬(Quick Sort)를 행한다고 한다. (난 원래 섞어서 쓰는 줄 알았는데. 대충 검색한거라 정확한 정보는 아님.) 어쨌든 합병 정렬에 대해서도 알아봤다. https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC 합병 정렬 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기..
(보통 그럴 일은 없겠지만) 라이브러리를 전혀 사용할 수 없는 환경에 놓인다면 어떨까 생각을 하다가, 정렬에 대해 생각해보게 되었다. 예전엔 버블정렬을 구현해서 쓰다가, 라이브러리에서 주어지는 sort들이 비교할 수 없이 탁월하게 빠르기 때문에 통 안쓰다보니.. 역시 정렬 알고리즘에는 여러가지가 있는데, 가장 원하는 측면이 속도이므로 퀵 정렬에 대해 알아봤다. https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC 퀵 정렬 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 퀵 정렬(Quicksort)은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬..