전체 글 126

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

프로그래머스 해시 - 전화번호 목록 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_..

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

⭐ 커리어이야기 - 피드백 중요성 📌 행동 양식과 관련된 피드백 두루뭉실하다면 매니저에게 추가적인 질문할 것 새로운 레벨로 올라간다면 이전레벨에서 원하던 것이 아니다. 선한 의도로 받고, 내가 변해야 하는 상황임을 직시하자. 📌 피드백을 줄 때 유의사항 어떤 피드백을 줄 건가? 이 피드백을 정말 줄 필요가 있는가? 말하는 방식 : 내가 옳다가 아닌, 기대 → 관찰 → 그 후 발생한 Gap에 대해 상의 신뢰가 기반이 되어야함 → 그렇지 않으면 불편하게(부정적인 의도로) 받아들일 수 있음 내가 선한 의도로 피드백을 주고 있는가→ 감정 배제 : 사람을 배제하고 일에 포커스해서 피드백💧 팀원에게 인기 있어야 하지 않아야한다.💧 내가 옳다가 아닌, 무언가 Gap이 있는데 무엇인가? 💧 따라서, 기대 → 관찰 → ..

2606 바이러스, 14502 연구소 - DFS/BFS

1. 2606 바이러스 1.1. 문제유형 그래프, BFS, DFS 1.2. 자료구조 Q (deque): BFS 구현을 위한 큐 자료구조 node (int): Q에서 꺼낸 현재 노드(Vertex) next (int): node와 연결되어 있으며 다음에 방문할 노드(Vertex) graph (2d-list): 인접 리스트(Adjacency list)로 노드에 연결된 간선(edge) 정보 저장 visited (1d-list): 방문 여부를 확인하는 리스트 1.3. 해결과정 ⭐1번 노드부터 BFS를 순회하며 방문한 장소는 True로 표시한다. 방문이 끝난 후 True의 개수를 출력한다. 이 때, 1번은 포함하지 않으므로 -1한 값을 출력한다. 1.4. 소스코드 from collections import dequ..

알고리즘 2021.08.25

백준 - 8983 사냥꾼 [이분탐색]

8983 사냥꾼 1. 문제유형 이분탐색, 정렬 2. 자료구조 m (int): 사대의 수 n (int): 동물의 수 l (int): 사대 사정거리 gun (list): 사대 좌표를 담은 리스트 animal (list): 동물 좌표를 담은 리스트 cnt (int): 잡은 동물의 수 s (int): 해당 동물을 잡을 수 있는 최소 사대 좌표 e (int): 해당 동물을 잡을 수 있는 최대 사대 좌표 left, right(int): 사대 좌표의 최소값(0), 최대값(m-1) 인덱스 mid (int): 동물을 잡을 수 있는 사대 좌표값 (left+right)//2 3. 해결과정 ⭐ 사대 거리를 고정하고 가능한 동물 수를 구하려고 하면 시간 복잡도가 높아진다. (n^2) ⭐ 따라서 동물을 고정하고, 잡을 수 있는 ..

카테고리 없음 2021.08.18

백준 - 11977 Angry Cows [이분탐색, 브루트포스]

11977 Angry Cows 1. 문제유형 이분탐색, 정렬, 브루트포스 2. 자료구조 n (int): 건초의 수 bay (list): 건초의 위치를 담은 리스트 cur (int): 현재 건초의 위치 인덱스 rad (int): 폭발 사정거리 l (int): 옮겨 붙을 왼쪽 건초 좌표 인덱스 r (int): 옮겨 붙을 오른쪽 건초 좌표 인덱스 cnt (int): 폭발시켜 태운 건초의 최대값 3. 해결과정 ⭐왼쪽으로 옮겨 붙는 경우와 오른쪽으로 옮겨 붙은 경우를 나누어 구했다. ⭐왼쪽으로 옮겨 붙을 때는 터뜨린 가장 왼쪽 건초 index까지 count한 후 rad를 증가시킨다. ⭐오른쪽으로 옮겨 붙을 때 역시, 터뜨린 가장 오른쪽 건초 index까지 count한 후 rad를 증가시킨다. 0번째 건초부터 n-..

알고리즘 2021.08.17

백준 - 1654 랜선 자르기 [이분탐색]

1654 랜선 자르기 1. 문제유형 이분탐색, Binary Search 2. 자료구조 lans (list): 보유한 랜선의 길이를 저장하는 리스트 left, right (int): 랜선 최소길이, 최대길이 mid (int): 지정한 랜선 길이. left, right의 중간값 cnt (int): 잘라서 얻어낸 랜선 개수 3. 해결과정 최대 랜선 길이가 2^31-1이므로 이분탐색을 떠올렸다. 항상 n개의 랜선 개수를 만들 수 있으므로, 랜선 길이를 지정 후 n개가 되는지 테스트한다. 최대 범위가 2^31-1인 것을 깜빡해서 1차시도 때 오답으로 책정되었다. left, right를 지정하되 right의 범위는 2^31-1을 포함하도록 설정한다. mid 계산 후 cnt가 n을 만족하는 지 확인한다. cnt가 n..

카테고리 없음 2021.08.16

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

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

백준 - 1477 휴게소 세우기 [이분탐색]

1477 휴게소 세우기 1. 문제유형 이분탐색 2. 자료구조 distance (int): 도로 최대 길이 conv (list): 휴게소 위치를 담은 리스트 left, right (int): 휴게소가 없는 최대거리의 최소값(1), 최대값(distance-1) mid (int): 지정한 최대거리의 최소값. left, right의 중간값 current (int): 현재 위치를 저장할 변수 diff (int): 현재 위치 - 다음 휴게소 위치로 휴게소가 없는 거리 cnt (int): 설치한 휴게소 개수 3. 해결과정 ⭐ 놓친점) diff가 mid와 같은 경우 휴게소를 설치하지 않아야 한다. (따라서 diff-1을 mid로 나눈다.) ⭐ 아이디어) 휴게소가 없는 최대거리의 최소값을 지정하고, 휴게소를 설치를 완료..

알고리즘 2021.08.15

백준 - 17393 다이나믹 롤러 [이분탐색]

17393 다이나믹 롤러 1. 문제유형 Binary Search 2. 자료구조 ink (list): 잉크를 저장하는 리스트 vis (list): 점도를 저장하는 리스트 answer (list): 각 자리에서 최대 칠할 수 있는 타일 수를 저장하는 리스트 pos (int): 현재 타일 위치의 잉크값 l (int): 현재 위치의 바로 앞 타일 위치를 저장 r (int): 타일의 가장 끝 위치를 저장 mid (int): l,r의 중간값 res (int): 현재 위치에서 칠할 수 있는 최대 타일 위치 3. 해결과정 아이디어는 현재 위치 ink값보다 작은값들 중 최대값의 위치를 찾는다. 현재 위치 + 1 부터 ink값보다 작은 최대값 위치까지의 값을 카운트한다. 이 거리가 현재 위치에서부터 칠할 수 있는 타일 수..

알고리즘 2021.08.14