python 49

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

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

[누적합] 11660 구간 합 구하기 5, 3020 개똥벌레

3. 11660 구간 합 구하기 5 3.1. 문제유형 누적합 3.2. 풀이과정 매 번 2중 for문을 계산할 시 시간초과가 발생할 것이다. 따라서 미리 누적합을 계산해 놓고, 구간별로 뽑아 리턴한다. 이 때, col 인덱스번호가 0이라면 종료값의 누적합을 덧셈한다. 시작 인덱스가 0이 아니라면 종료값 - 시작값을 덧셈한다. python 시간 초과 발생 -> pypy3로 통과 3.3. 소스코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) nums = [list(map(int, input().split())) for _ in range(n)] for i in range(n): for j in range(1, n): nums[i..

알고리즘 2021.09.18

[그리디] 1946 신입사원, 1339 단어 수학

3. 1946 신입사원 3.1. 문제유형 그리디, 정렬 3.2. 해결과정 그리디 문제지만 지원자가 10만명이므로 2중 for문으로 접근 시 10^10 연산 횟수가 필요하다. 따라서 O(n^2)이하의 복잡도로 문제를 해결해야 한다. 힌트는 서류나 면접점수 둘 중 하나로 정렬하면, 1명은 무조건 합격이라는 것을 알 수 있다. 이를 활용하여 서류로 정렬 후 합격자보다 면접점수가 높은 지원자를 카운트한다. 이전 합격자보다 면접점수가 높은 지원자가 나오면 면접 점수를 갱신한다. 3.3. 소스코드 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): n = int(input()) apply = [list(map(int,input().sp..

알고리즘 2021.09.10

[시뮬레이션] 1244 스위치 켜고 끄기

10. 1244 스위치 켜고 끄기 10.1. 문제유형 시뮬레이션 10.2. 해결과정 여성일 경우와 남성일 경우를 처리하는 함수를 2개 구성했다. 남성의 경우 받은 번호의 배수에 해당하는 스위치를 Turnoff한다. 배수임을 확인할 때는 입력받은 값을 그대로 사용하되, 인덱싱할 때는 -1 처리한다. 여성의 경우 받은 번호의 양 옆 대칭인 스위치를 Turnoff한다. 입력받은 값을 -1 처리 후 왼쪽, 오른쪽 값을 인덱싱한다. 10.3. 소스코드 n=int(input()) switch=list(map(int,input().split())) s=int(input()) students=[list(map(int, input().split())) for _ in range(s)] def male(num): for ..

알고리즘 2021.09.08

[시뮬레이션] 16236 아기상어

9. 16236 아기상어 9.1. 문제유형 시뮬레이션 9.2. 해결과정 고려할 조건이 많은 까다로운 문제였다. 상어 위치를 찾고, BFS 탐색을 수행한다. 먹을 물고기가 있는지 없는지를 확인한다. 같은 거리라면 가장 위 물고기를, 그런 물고기가 여러마리라면 왼쪽 물고기를 먼저 먹는다. 상어의 크기 변화 조건 (먹은 물고기 수)을 체크한다. 먹이를 먹은 후, 새로운 위치 탐색을 위해 큐와 방문장소를 초기화한다. 먹이를 먹은 후, 현재까지의 시간을 저장한다. 9.3. 소스코드 from collections import deque dxs=[-1,1,0,0] dys=[0,0,-1,1] def BFS(x, y): Q, visited=deque([(x,y)]), set([(x,y)]) time=0 shark=2 e..

알고리즘 2021.09.08

[시뮬레이션] - 14503 로봇 청소기

7. 14503 로봇 청소기 7.1. 문제유형 시뮬레이션 7.2. 풀이과정 3가지를 정확히 구현해야 해결할 수 있었다. 좌표 이동을 기존 좌표계와 반대로 구현해야한다. 좌표 이동 시 방향 d가 현재 기준 왼쪽부터 탐색하도록 구현해야 한다. 방향 d에 대해 후진 위치를 정확히 지정해주어야 한다. 1,2번까지는 제대로 구현했으나, 3번 제대로 지정하지 못해 오랜 시간이 소요되었다. 7.3. 소스코드 n, m = map(int, input().split()) r,c,d = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[0]*m for _ in range(n)] dx=[-1,0,1,0..

알고리즘 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_..

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

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