분류 전체보기
-
[Python] programmers 메뉴 리뉴얼 - 구현 문제알고리즘/문제풀이 2021. 7. 3. 19:26
1. 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 2. 문제 요약 주문할 때 가장 많이 주문한 단품 메뉴로 구성 최소 2명 이상의 손님이 주문 3. 아이디어 정리 defaultdict에 조합 메뉴 횟수를 담아 가장 많이 주문된 요리를 찾는 풀이 하였다. 4. 문제 풀이 4-1. 내 풀이 from itertools import combinations from collections import def..
-
docker log fluentd 설정개발/log(로그)관리 2021. 6. 10. 12:53
1. fluentd란? 각종 로그를 수집하고 저장할 수 있는 기능을 제공하는 오픈소스 도구로 도커 엔진 컨테이너 로그를 fluentd를 통해 저장할 수 있도록 플로그인을 제공합니다. fluentd는 수집된 데이터를 aws s3, HDFS, MongoDB 등 다양한 저장소에 저장할 수 있다는 장점이 있습니다. 도커 로그를 fluentd를 통해 저장하려고 합니다. 여러 output 중에서 파일 output, mongodb output 설정을 실습으로 하겠습니다. 2. fluentd 로깅 설정하기 2-1. docker 설정 1. fluentd docker 이미지 생성 Dockerfile 생성 # vi Dockerfile FROM fluent/fluentd:v1.12-debian-1 # Use root acco..
-
이진탐색(Binary Search) with Python알고리즘/문제풀이 2021. 1. 22. 21:29
이진 탐색을 알아보기 전에 가장 기본 탐색 방법인 순차 탐색을 알아보고 이진 탐색을 알아본다. 1. 순차 탐색 순차 탐색은 리스트 안에 있는 특정 데이터를 찾기 위해서 앞에서부터 차례대로 확인하는 방법이다. 앞에서부터 하나씩 확인해야 하기 때문에 시간 복잡도는 O(N)이 된다. 1-1. 구현하기 순차 탐색 소스를 구현하면 아래와 같다. 사람 이름 리스트 중 dongbin의 위치를 출력한다. def sequential_search(n, target, array): for i in range(n): if array[i] == target: return i + 1 array = ["hanul", "jonggu", "dongbin", "taeil", "sangwook"] print(sequential_searc..
-
해시 알고리즘알고리즘/문제풀이 2020. 9. 20. 23:00
이번 시간에는 해시 알고리즘에 대해서 알아본다. 해시 테이블과 해시 테이블에서 충돌이 발생하는 경우 해결방법 2가지를 알아본다. 1. Direct Addressing Table 크기가 U인 테이블 T를 생성하고 key k를 slot key에 저장하는 방식이다. 해당 테이블은 중복되는 키가 없다고 가정한다. 이는 삽입, 삭제, 검색 모두 O(1)이지만, 모든 키를 넣어야 하기 때문에 공간 낭비가 심하다. 예를 들어 모든 학생들에게 한 자리씩 할당해 준 것이다. 2. Hash Table key k를 저장할 때 slot k를 저장하는 것이 아니라 slot h(k)에 저장한다. key k가 slot h(k)로 해시되었다고 하며, h(k)를 key k의 해시값이라고 부른다. 이때 h( )는 해시 함수라고 부른다...
-
python 해시 테이블알고리즘/문제풀이 2020. 9. 20. 16:28
이번 시간에는 python 해시 관련하여 알아본다. python 해시 테이블 방식과 dict 자료형을 알아보고 자주 사용되는 모듈을 알아본다. 1. 파이썬 해시 테이블 파이썬에서 해시 테이블로 구현된 자료형은 딕셔너리다. 그렇다면 파이썬의 해시 테이블은 충돌 시 어떤 방식을 사용할까? 파이썬에는 오픈 어드레싱 방식으로 구현되어 있다. 파이썬에서 오픈 어드레싱 방식을 사용한 이유는 체이닝 시 malloc으로 메모리 할당하는 오버헤드가 높아서 오픈 어드레싱을 선택했다고 한다. 오픈 어드레싱 방식은 체이닝에 비해 성능이 좋다. 하지만 슬롯이 80% 이상 차게 되면 급격하게 성능 저하가 일어나며, 체이닝과 달리 로드 팩터 1 이상은 저장할 수 없다. 따라서 파이썬은 오픈 어드레싱 방식을 택해 성능을 높이지만 로..
-
[글또 4기 회고] 글또 4기를 마치며개발/Etc 2020. 8. 15. 21:31
6개월이라는 기간 동안 글또를 진행하였는데요. 총 12개(패스 2개 포함)를 작성했네요. 10만원이라는 보증금💸을 지키기 + 책임감으로 열심히 했던 것 같은데요. 당시에는 열심히 하려고 노력을 했다고 생각했는데 지금 보니 아쉬운 마음이 크네요. 사실 글또를 하면서 2주에 한번 올리는 것이 쉬울 것 같았는데요. 생각보다 스트레스도 많았어요.(사실 대충 할 수 있지만, 그게 허용이 안 되는 성격이라서 더 힘들었던 것 같네요😢) 그래서 중간에 글또를 그만둘까?라는 생각도 했지만... 처음 글또 목표를 생각하고 지금까지 버티어 마지막 회고까지 쓰게 되네요. 이렇게 버틴 덕분에 얻은 것이 더 많았어요! 현재 자신의 블로그에 피드백이 필요하거나 개발자로 더 부지런해지고 싶다면 글또에 신청하는 것을 추천합니다 👍 글..
-
Head First design patterns 책 리뷰개발/Design Patterns 2020. 8. 14. 17:27
디자인 패턴 책으로 유명한 Head First design patterns 책을 읽고 리뷰를 남기려고 합니다. 해당 책에 대해 간단히 소개하고 제가 읽고 느낀 부분을 말씀드리겠습니다. Head First design patterns 소개 Head First design patterns 책은 이름에서 알 수 있듯이 디자인 패턴에 대해 다룬 책입니다. 부록까지 포함하면 아래 리스트와 같이 총 14장으로 구성되어 있습니다. 아래의 목차를 보면 알 수 있듯이 1장 디자인 패턴 소개에서는 왜 디자인 패턴을 배워야 하는지에 대한 설명을 합니다. 그 외 장들은 각 패턴에 대해 소개와 예제를 실습해 보는 구성입니다. 디자인 패턴의 세계에 오신 것을 환영합니다: 디자인 패턴 소개 객체들에게 연락망을 돌립시다: 옵저버 패..
-
[2019.11.18/ 우아한 Tech] 우아한 레디스(Redis) 세미나 후기 -강대명님개발/Seminar 2020. 8. 7. 18:02
0. 들어가기 전에 - 후기 회사에서 redis를 사용하고 있어서 개선할 점이나 다른 회사는 어떤 식으로 사용하는지 보기 위해서 세미나에 참석하게 되었다. 강대명 님의 세미나를 듣고, redis 관리 방법이나 사용하면 주의 점 등 기존에 몰랐던 점을 많이 알게 되어서 정말 유익하였습니다.👏👏 강연 자료: https://www.slideshare.net/charsyam2/redis-196314086 강연: youtu.be/mPB2CZiAkKM 1. 목차 Redis 소개 왜 Collection이 중요한가? Redis Collections Redis 운영 Redis 데이터 분산 Redis failover 1. Redis 소개 1-1. 소개 전에 Cache # 캐시 구조 1. Look aside Cache 현재..