본문 바로가기

전체 글100

[Python] Trie 자료구조 Trie(트라이) 자료구조는 문자열 집합에서 키를 효율적으로 저장하고 조회하는데 사용된다. 스펠 체커나 자동완성 기능에서 사용된다. 파이썬에서는 딕셔너리 자료구조를 이용해 쉽게 구현할 수 있다. insert (단어 삽입) 단어의 키(문자)가 커서에 존재하지 않는 경우 해당 키로 딕셔너리를 생성하고, 커서 위치를 업데이트 해준다. 단어 삽입이 완료되면 * 키를 생성해서 끝임을 표기한다. search (단어 조회) 단어의 키(문자)가 커서에 존재하지 않는 경우 False를 반환하고, 커서 위치를 업데이트 해준다. 단어 순회가 완료되었을 때 * 키가 커서에 있을 경우 True를 반환하고 없을 경우 False를 반환한다. startswith (접두어 조회) 단어의 키(문자)가 커서에 존재하지 않는 경우 Fals.. 2021. 10. 10.
[Python] 디스크 컨트롤러 https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr Point 힙 자료구조를 이용해 SJF로 비선점 스케쥴링을 구현해볼 수 있는 문제 Tip 시작 전 jobs을 정렬해준다 현재 시간에 해당하는 job을 jobs에서 모두 꺼내주고 Min Heap에 저장한다. 이때 처리시간이 가장 짧은 순으로(SJF) 정렬된다. 컨트롤러에 처리중인 job이 있을 때, 반환시간과 현재시간이 같다면 컨트롤러에서 내리고 총 소요시간.. 2021. 9. 26.
[Python] 전화번호 목록 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr Point 해쉬를 이용한 문제로, 트라이(Trie) 자료구조를 응용해서 풀어보기 좋은 문제이다. 실제로 많은 분들이 리스트와 반복문을 이용해서 풀고 있는데, 만약 문제의 제약조건이 타이트했다면 해결하기 어려울 것이다. Tip 정렬을 하지 않는 것이, 최악 테스트케이스에서 수행 시간이 더 빠르다. 따라서 prefix+a 문자열이 이미 트라이에 있을 때, pre.. 2021. 9. 25.
정렬 알고리즘 표 (Python 코드포함) 인터뷰 대비를 위한 기본적인 정렬 알고리즘 표입니다. Python 버전의 코드 구현도 함께 비교할 수 있습니다. 클릭해서 보시는 것을 추천드립니다. 2021. 9. 17.
MariaDB 버전 업그레이드 (10.1 -> 10.4) 태그 정보 저장을 위해 MariaDB에서 JSON_OBJECT 기능을 사용하던 중, 동일한 코드에 대해 한쪽 DB는 문제가 없는 반면, 다른 DB에서 1305에러 - JSON_OBJECT DOES NOT EXIST가 발생했다. 확인해보니, JSON_OBJECT 기능은 MariaDB 10.2.3 에 추가된 기능인데 문제가 된 DB는 10.1.x 버전을 사용하고 있었다. (참고: JSON_OBJECT) 따라서 JSON_OBJECT 기능 사용을 위해 MariaDB 버전 업그레이드를 수행하였다. 1. [Option] DB ALL 백업 & Data Directory 복사 실제로 덤프파일을 다시 임포트하거나 카피한 데이터 디렉토리를 덮어씌어주진 않았지만 만약을 대비해 기존 데이터는 백업&복사 한다. DB ALL 백.. 2021. 9. 15.
Install MongoDB 5.0 on CentOS 7 1. MongoDB 레포지토리 추가 # vim /etc/yum.repos.d/mongodb-org-5.0.repo mongodb-org-5.0.repo 파일 내용 [mongodb-org-5.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc 2. MongoDB 패키지 설치 # yum install -y mongodb-org ... Installed: mongodb-org.x86_64 0:5.0.1-1.el7 Dependency I.. 2021. 7. 30.
[Python] LongestPassword https://app.codility.com/demo/results/trainingPB6C9Y-2CD/ Test results - Codility You would like to set a password for a bank account. However, there are three restrictions on the format of the password: it has to contain only alphanumerical characters (a−z, A−Z, 0−9); there should be an even number of letters; there should be an app.codility.com Point 제시된 조건에 따라 validation check를 수행한다 스플릿 하여 fo.. 2021. 7. 18.
[Python] TreeHeight https://app.codility.com/demo/results/trainingMGZBGQ-R79/ Test results - Codility In this problem we consider binary trees, represented by pointer data structures. A binary tree is either an empty tree or a node (called the root) consisting of a single integer value and two further binary trees, called the left subtree and the right sub app.codility.com Point dfs를 이용해서 height(depth)를 카운트한다 Tip 탈.. 2021. 7. 18.
[Python] StrSymmetryPoint https://app.codility.com/demo/results/trainingYMXCBY-VNE/ Test results - Codility Write a function: def solution(S) that, given a string S, returns the index (counting from 0) of a character such that the part of the string to the left of that character is a reversal of the part of the string to its right. The function should return − app.codility.com Point center point까지 start와 end를 반복문을 통해 비교해.. 2021. 7. 18.
728x90
반응형