본문 바로가기

Python191

#2 Airflow Tutorial documentation 부수기 https://airflow.apache.org/docs/apache-airflow/stable/tutorial.html Tutorial — Airflow Documentation airflow.apache.org Airflow Tutorial documentaion을 부숴보자 참고로 작성당시 Airflow 버전은 2.1.2이다. from datetime import timedelta from textwrap import dedent # The DAG object; we'll need this to instantiate a DAG from airflow import DAG # Operators; we need this to operate! from airflow.operators.bash import B.. 2021. 8. 26.
[프로그래머스] 등굣길(Python) https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr dp = [[0 for w in range(101)] for h in range(101)] _map = [[0 for w in range(101)] for h in range(101)] # 01 state = [[0 for w in range(101)] for h in range(101)] # 012 dxdy = [[1, 0], [0, 1], [-1,.. 2021. 8. 12.
[프로그래머스] 2 x n 타일링(Python) https://programmers.co.kr/learn/courses/30/lessons/12900 코딩테스트 연습 - 2 x n 타일링 가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는 programmers.co.kr def solution(n): a,b =1,2 for i in range(n-1): a,b = b, a+b return a%1000000007 ''' n(1) = 1 n(2) = 2 n(3) = 3 n(4) = 5 n(5) = n(3) + n(4) ''' 2021. 8. 12.
[프로그래머스] 이중우선순위큐(Python) https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr def solution(operations): answer = [] test=[] for _str in operations: _str=_str.split() if _str[0]=='I': test.append(int(_str[1])) test.sort() else: if test: if _str[1]=='1': test.pop(-1) else: test.pop(0) if test: return [test[-1],test[0]] return [0,0] 2021. 8. 12.
[프로그래머스] 정수삼각형(Python) https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr def solution(triangle): for depth in range(1, len(triangle)): for i, v in enumerate(triangle[depth]): v1 ,v2 = 0,0 if(i>0): v1 = triangle[depth-1][i-1] if(i 2021. 8. 12.
[프로그래머스] 디스크 컨트롤러(Python) https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr import heapq def solution(jobs): ''' 풀이 알고리즘 - 비선점 디스크 스케줄러 1. 2차원 배열을 요청과 작업 순서가 적은대로 정렬. sort활용. 2. 작업 시작 시간과 작업 시간을 고려해서 heapq에 저장 3. count와 latest, time 최신화 ''' jobs.sort() heap = [] count = 0 # 디.. 2021. 8. 12.
[프로그래머스] N으로 표현(Python) https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr ''' DP N 으로 표현. N 과 number 가 주어질 때 N을 최소로 사용하여 number를 표현. ex) 5로 12표현 state(1) = (int(str(N)*1)) state(2) = 5+5 , 5-5 , 5*5 , 5/5 , (int(str(N)*2)) state(3) = state(2)+5 , state(2)-5 , state(2)/5 ,(int(str(N)*3)) state(4) = state(2) + state(2) , ... ''' def solution(N, number): if N == number: return 1 .. 2021. 8. 12.
[프로그래머스] 입국심사(Python) https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr def solution(n, times): start=1 end=min(times)*n answer=end while(end>=start): mid=(start+end)//2 people=0 for i in times: people+=mid//i if people>=n: end=mid-1 if answer>=mid: answer=mid else: start=mid.. 2021. 8. 12.
[프로그래머스] 도둑질(Python) https://programmers.co.kr/learn/courses/30/lessons/42897 코딩테스트 연습 - 도둑질 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 programmers.co.kr def solution(money): # dp[i] = max(dp[i-1], dp[i-2]+money[i]) 점화식 dp = [0]*len(money) #첫번째 집을 터는 경우 dp[0]=money[0] dp[1]=money[0] for i in range(2,len(money)-1): #마지막 집은 털면 안됨 dp[i] = max(dp[i-1], dp[i-2].. 2021. 8. 12.
[프로그래머스] 징검다리(Python) https://programmers.co.kr/learn/courses/30/lessons/43236 코딩테스트 연습 - 징검다리 출발지점부터 distance만큼 떨어진 곳에 도착지점이 있습니다. 그리고 그사이에는 바위들이 놓여있습니다. 바위 중 몇 개를 제거하려고 합니다. 예를 들어, 도착지점이 25만큼 떨어져 있고, 바위가 programmers.co.kr def solution(distance, rocks, n): result =0 rocks.extend([0,distance]) # 0 distance 추가 rocks.sort() # 정렬 start, end = 0, distance while start=mid: temp=i else: cnt+=1 if cnt>n+1: end=mid-1 else: s.. 2021. 8. 12.
[프로그래머스] 다단계 칫솔 판매(Python) https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr def cal_dividend(seller,amount,member_dict={}): dividend = int(amount*0.1) # 배당금 10% 1미만 if dividend < 1 : member_dict[seller][1] += amount # 그대로 순이익 # 배당금 10% 1이상 and 추천인 X elif member_dict[seller][0.. 2021. 8. 10.