프로그래머스 21

[7 Week] 프로그래머스 - 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python

⭐ Superset 오픈소스 대시보드 1. 설치 과정 Superset Direct Installation (Ubuntu) Superset Installation via Docker 깔끔하긴 하나, 좋은 사양의 서버 필요 Preset.io 사용 간편하게 사용 가능함 2. 설정 순서 Database 연결 DataSet 업로드 대시보드 시각화 Metrics → SIMPLE → AGGREGATE 선택 SQL 생각하며 설정하기 GROUP BY - SQL의 GROUP BY와 같음 시각화 후 Save Chart뿐만 아니라, Dashboard에도 저장할 수 있음 대시보드 화면에서 Edit 설정 가로, 세로, 헤더 등 필요한 정보 추가 가능 ⭐ 배운 것 데이터 웨어하우스를 기반으로 데이터 인프라를 만드는 것 파이썬, S..

[6 Week] 프로그래머스 - 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python

⭐ Params 옵션 schema = context['params']['schema'] function 파라미터인 **context의 params를 익숙하게 사용해 볼 것 ⭐ 주의할 점 데이터 작업은 클린하게 Fail 하는 것이 좋다. try~exception 사용 시 raise를 사용할 것 raise 없을 시 except 처리 후 흘러가 버리므로 파악이 디버깅 어려움 ⭐ DW 구축 업무 순서 첫 번째는 프로덕션 DB를 DW로 복사해오는 것 프로덕션 DB는 OLTP로 MYSQL, Postgres / 데이터 웨어하우스는 OLAP OLTP의 목적은 빠르게 처리해서 응답하는 것 따라서 분석용으로 못씀. 분석용 쿼리 시 시간 지체되면 문제 발생 고로, DW 구축하기 위해 프로덕션 DB를 DW로 복사 ⭐ 데엔-데..

[5 Week] 프로그래머스 - 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python

5️⃣ 주차 강의 내용 Airflow 시 혼란을 겪는 부분을 중점적으로 학습하였다. Autocommit 설정 autocommit = False일 때 내가 명시적으로 commit을 하기 전까지는 나에게만 그 변화가 보인다. 다른 사람들에게는 그 변화가 보이지 않는다. 예를 들어, 테이블을 삭제하고 조회하면 테이블이 없는 것으로 나온다. 하지만 다른 사람들에게는 여전히 테이블이 있는 것으로 조회가 됨 PostgresHook은 현재 autocommit = False를 반환함 autocommit = False일 때 주의할 점 쿼리문 실행 후 파이썬 try ~ exception와 commit;을 함께 사용하는 것이 best practice try ~ exception 시 ETL 운영상 관점에서 raise를 사용하..

프로그래머스 [해시] - 베스트앨범

프로그래머스 해시 - 베스트앨범 1. 문제유형 hashmap 2. 해결과정 1.⭐가장 많이 재생된 장르 순서를 구한다. 2. 장르별 인덱스, 재생횟수를 저장한 딕셔너리를 구한다. 3.⭐2번에서 구한 딕셔너리를 재생횟수를 기준으로 정렬한다. 4. 1번에서 구한 장르별 순서대로 3번에서 구한 인덱스를 2개씩 꺼낸다. 3. 소스코드 from collections import defaultdict def solution(genres, plays): answer = [] gdict = defaultdict(int) pdict = defaultdict(list) for genre,play in zip(genres, plays): gdict[genre]+=play gdict = sorted(gdict.items(),..

알고리즘 2021.09.07

프로그래머스 [해시] - 위장

프로그래머스 해시 - 위장 1. 문제유형 hashmap 2. 해결과정 경우의 수 문제이므로 각 type별 의상 개수를 구한다. 각 type별 의상 개수 + 1을 곱한 값에서 -1 처리를 구한다. 의상 개수 + 1을 하는 이유는 해당 의상을 안 입는 경우가 있기 때문이다. 결과값에서 -1 처리를 하는 이유는 어떤 의상도 입지 않은 경우를 제거하기 위함이다. 3. 소스코드 from collections import defaultdict def solution(clothes): answer = 1 hashmap = defaultdict(list) for name, type in clothes: hashmap[type].append(name) for k, v in hashmap.items(): answer *=..

알고리즘 2021.09.06

프로그래머스 [해시] - 전화번호 목록

프로그래머스 해시 - 전화번호 목록 1. 문제유형 hash map 2. 해결과정 크게 3가지 풀이방법이 존재했다. 2중 for문을 활용하는 방법 문자열 내장함수 startswith를 사용한 방법 hash를 활용한 방법 결론적으로 1번 방법은 시간복잡도가 O(N^2)이므로 효율성 문제를 통과할 수 없다. 따라서 2번과 3번을 활용한 풀이가 가능하다. 3. 소스코드 def solution1(phone_book): answer = True phone_book = sorted(phone_book, key=len) for n1 in phone_book: for n2 in phone_book: if n1 == n2[:len(n1)] and n1 != n2: answer = False return answer ret..

알고리즘 2021.09.05

[4 Week] 프로그래머스 - 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python

⭐ 커리어 이야기 Assignment Review 🍎 느낀점 단순 지식 습득이 아닌, 매주 커리어에 관한 이야기를 함께 해줘서 좋았다. 어떻게 좋은 개발자로 성장해 나갈 수 있느냐, 직장을 고를 때 기준은 어떻게 고르냐?에 대한 이야기가 도움이 많이 됬다. 목표: 우수 수강생으로 선발되기❗ 매주 첫번째로 과제를 제출하고, 수업 내용을 복습한 뒤 질문을 올려야겠다. DataLake, Dataware house란❓ 소중한 회사 정보가 모이는 보물창고와 같다. 가치가 증명되지 않은 보석, 원석들을 유실없이 잘 적재하는 것이 엔지니어 역할이다. 그 원석들의 가치를 발견하고 증명해내는 것이 사이언티스트의 역할이다. 📘 복습 내 쿼리문 %%sql CREATE TABLE ghgoo1798.monthly_active_..

[2 Week] 프로그래머스 - 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python

2️⃣ 주차 강의 내용 2주차의 주요 내용은 크게 3가지였다. 데이터 엔지니어의 한 주 주 초엔 저번 주차를 피드백 잘 된 작업은 무엇인가? 더 잘할 수 있었던 작업은 무엇인가? On-Call 엔지니어 지정 한 주간 data pipeline 실패 관련 이슈 해결 100%가 아닌 가장 중요한 20%를 반드시 성공 상시 모니터링, 데이터 엔지니어링 == 노가다? 데이터 파이프라인 개발 최적화 Metrics & Quarterly Goals 리뷰 30-40% 시간은 인프라 코드의 refactoring에 사용 클라우드 컴퓨팅의 장단점과 주의사항 장점 초기 투자 비용 감소 리소스 준비를 위한 대기시간 감소 사용한만큼 금액 지불 단점 Variable Cost Option의 경우 요금 폭탄 더욱 신중한 SQL 작성 요..

프로그래머스 - 징검다리 [이분탐색]

징검다리 1. 문제유형 이분탐색 2. 자료구조 distance (int): 목적지 거리 rocks (list): 바위 위치를 저장한 리스트 left, right (int): 바위별 거리의 최소값, 최대값 mid (int): 정답으로 지정한 바위별거리. left, right의 중간값 current (int): 현재 바위 위치 diff (int): 현재 바위 위치를 기준으로 다음 바위까지의 거리 cnt (int): 제거한 바위 수 3. 해결과정 최대 범위가 10억이므로 이분탐색을 위해 rocks를 정렬 후 시작한다. 이분탐색을 지정하기 위해 최소, 최대거리를 지정한 후 mid를 계산한다. mid가 정답이이라고 가정한 뒤, 제거한 바위 수가 n과 같은지 판단한다. 바위를 하나씩 꺼내가며 diff를 계산하고, ..

알고리즘 2021.08.13

프로그래머스 - 입국심사 [이분탐색]

1. 입국심사 1.1. 문제유형 이분탐색 1.2. 자료구조 times (list): 심판관별 심사시간 left, right (int): 최소 시간, 최대 시간 mid (int): 정답으로 지정한 left, right의 중간값 cnt (int): mid 시간안에 완료한 승객 수 1.3. 해결과정 구하고자 하는 것은 최소 시간이다. 이분탐색을 사용하여 정답 시간을 설정 후 지정한 시간안에 완료되는 지를 구한다. left, right 지정 후 left

알고리즘 2021.08.12