반응형

분류 전체보기 47

[SQL 문제 풀이] 프로그래머스 '멸종위기 대장균 찾기'

WITH RECURSIVE CTE (GENERATION, ID) AS ( -- 초기조건 SELECT 1,ID FROM ECOLI_DATA WHERE PARENT_ID IS NULL UNION ALL -- 아래부터 반복 결과가 없으면 종료 SELECT GENERATION + 1, e.ID FROM ECOLI_DATA e -- 자식이 하나도 없는 마지막 세대일 경우 결과가 없음 JOIN CTE c ON e.PARENT_ID = c.ID ) SELECT COUNT(*) AS COUNT, GENERATION FROM CTE WHERE ID NOT IN ( SELECT PARENT_ID FROM ECOLI_DATA WH..

카테고리 없음 2024.09.29

[Chromebook 탐험] Android 폰 연동 Feat. ChromeOS Phone Hub

Chromebook의 Phone Hub를 이용하면 Android 기반의 스마트폰을 연결해 두 기기를 더욱 잘 활용할 수 있다. 스마트폰에서 주고받던 메세지, 사진, 크롬 탭 등을 관리하고 스마트폰에서 구동되는 앱 화면을 스트리밍하여 원격조작할 수 있다. Windows의 Phone Link와 거의 비슷한 컨셉이다.  Chromebook의 Phone Hub는, 공식 문서에 따르면 픽셀과 낫싱폰, 샤오미 등 일부 기기만이 완벽히 지원한다고 나와있다. 하지만 안드로이드 13 버전 이상이라면 연결이 될 것으로 보인다. 실제로 필자가 사용하는 기기 역시 공식문서에는 언급되어 있지 않지만 잘 연결되었다. 여러분도 시도해보시길 바란다. 스마트폰을 크롬북에 연결하기 (공식문서 번역)중요: 블루투스가 켜져있는지 확인합니다..

Consumer Tech 2024.09.22

[SQL 문제 풀이] 프로그래머스 '물고기 종류 별 대어 찾기'

ROWNUMBER()를 활용한 전형적인 트릭 Programmers SQL 문제 풀이 Lv3물고기 종류별 대어 찾기 조건파악 FACT와 DIMENSION으로 분류된 전형적인 테이블 구조이다. 타겟 속성이 NULLABLE이다. 접근 그룹별로 최대값을 가진 행만 SELECT한다. 그룹 안에서 랭킹을 부여하면 된다. 이를 위해서는 ROWNUMBER()를 사용한다. 정렬 후 순서대로 ROWNUMBER를 부여하면 자연스럽게 랭킹을 구현할 수 있다. 특별히 이 경우, 그룹 내에서의 랭킹을 부여하기 위해 OVER()와 PARTITION을 사용한다. DESC로 정렬할 때 NULL을 뒤로 보내기 위해 IS NULL ASC의 정렬 조건을 추가한다. 쿼리분석 WITH J AS ( SELECT ID, FISH_NAME, LEN..

[SQL 문제 풀이] 프로그래머스 '언어별 개발자 분류하기'

비트 논리 연산을 알면 풀고 모르면 못 풂 프로그래머스 Lv.4 '언어별 개발자 분류하기' SQL 코드 및 풀이 조건파악 SKILL_CODE가 400 (=b'110010000')이라면, 이는 SKILLCODES 테이블에서 CODE가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') 에 해당하는 스킬을 가졌다는 것을 의미합니다. 접근 비트 논리 연산자 &를 이용해 두 수를 비교할 경우 일치하는 비트가 존재할 경우 True가 나온다. 이를 이용해 JOIN하자. 구현 WITH J AS ( SELECT ID, EMAIL, CASE -- 조건에 맞게 SCORE를 기록 WHEN COUNT(CASE WHEN CATEGORY = 'Front End' THEN 1 END..

카테고리 없음 2024.03.18

[Python 문제 풀이] 프로그래머스 '[PCCP 기출문제] 2번 / 석유 시추'

공간적으로 생각해야 함 프로그래머스 Lv.2 '석유 시추' 파이썬 코드 및 풀이 조건파악 1. 시추관이 지난 덩어리는 다 채굴됨 2. 땅의 크기는 최대 500x500 -> 최소 연산 횟수 250,000이다. 접근 BFS로 각 덩어리의 크기를 구해야겠다. 그러고 나서 덩어리의 좌우 가장 끝에 있는 부분의 column 좌표를 기록하자. 이 범위에 시추관이 들어오면 그 때 덩어리의 크기를 더하면 된다. 면적이 크지 않아 중간에 이런 저런 연산이 추가되어도 넉넉하게 풀 수 있겠다. 의사코드 BFS로 각 덩어리의 크기를 구한다. BFS 로직 안에 덩어리의 좌우 양 끝의 column좌표를 기록하는 로직을 추가한다. 덩어리 하나를 다 구하고 나면 땅의 column 수에 맞게 만들어 놓은 배열에다가 덩어리 좌우 좌표를..

[Python 문제 풀이] 프로그래머스 '[PCCP 기출문제] 4번 / 수레 움직이기'

조건을 꼼꼼히 잘 따져야 하는 짜증나는 문제 프로그래머스 Lv.3 '수레 움직이기' 파이썬 코드 및 풀이 조건파악 1. 미로의 크기는 최대 4x4이므로 시간복잡도는 신경쓰지 않아도 OK 2. 도착 전까지는 무조건 움직임 3. 도착한 수레는 고정 4. 미로 밖을 넘지 않을 것 5. 벽이 아닐 것 6. 각 수레는 자신이 지나온 경로를 다시 갈 수 없음 7. 수레가 겹쳐있을 수 없음 8. 서로 자리를 바꾸지 않을 것 접근 BFS를 이용해 풀면 되는데 두 개가 동시에 움직인다. 의사코드 1. 초기 위치를 찾음 2. 큐에 대해 반복 현재 상태를 꺼냄 도착한 수레를 특정, 모두 도착하면 그 즉시 종료 및 이동횟수를 반환 도착하지 않은 수레에 대해 조건에 맞는 경우의 수를 지나온 경로, 이동 횟수와 함께 큐에 넣음 ..

Airflow에서 TaskFlow API(@task)와 PythonOperator가 아닌 Operator 같이 사용하기

Introduction 기존의 DAGs에서 작성되는 고전적인 방식에 대비되는 TaskFlow API 패러다임은 Airflow 2.0에서 소개되었다. 데이터 파이프라인에서 파이썬 함수에 @task 데코레이터를 붙이는 것으로 간단하게 task를 생성할 수 있다. 함수의 이름이 task의 유일한 식별자 역할을 한다. 그런데 PythonOperator가 아닌 다른 Operator를 사용하면서 @task 데코레이터를 쓰려면 어떻게 해야할까? QuickStart 간단하게 context를 파이썬 함수의 파라미터로 받고 이걸 내부에 있는 다른 operator에 넘겨주면 된다! 아래는 예시이다. @dag() def dag(): @task() def python_task(**context): bash_task = Bash..

How to use TaskFlow API (@task) while using an Operator other than Python

Introduction TaskFlow API paradigm is introduced as part of Airflow 2.0 and contrasts this with DAGs written using the traditional paradigm. In this data pipeline, tasks are created based on Python functions simply using the @task decorator. The function name acts as a unique identifier for the task. But how do I use Python and other operators together? Let's check it out. QuickStart You just si..

PolarDB에서 OSS에 있는 csv파일 로드하기 (FOREIGN TABLE)

Introduction 이번 포스트에서는 PolarDB (for MySQL or PostreSQL)을 이용해 OSS (Object Storage Service)에 업로드한 CSV파일을 간단하게 읽는 방법에 대해서 설명한다. 이 방법을 통해 AWS의 Athena나 Redshift Spectrum처럼 PolarDB에서도 OSS에 있는 CSV형식의 파일에 다이렉트로 쿼리할 수 있다. Prerequisites 버전 확인 Alibaba cloud 공식 문서에 따르면 PolarDB for MySQL의 경우 아래 버전을 만족해야 한다. : A cluster of PolarDB for MySQL 8.0.1 whose revision version is 8.0.1.1.25.4 or later. A cluster of P..

Github Actions로 초간단 코드 배포하기 (SSH)

이번 포스팅에서는 Github Actions를 이용해 아주 간단하게 코드를 원격 리눅스 서버에 배포하는 기능을 구성해보도록 하겠다. 코드 배포에는 Ubuntu를 기준으로 작성되었으며 SSH와 SCP를 이용한다. 이게 제일 간단하다. SCP를 이용하면 복사할 때 중복되는 파일을 덮어쓰기 됨에 유의하자. Prerequisites - 서버의 public access 개방 - 배포할 서버에 접속할 수 있는 key pair (pem파일) Quick Start Github Actions에 들어가서 main 브랜치에 대해 actions를 생성한다. 아래 내용을 작성하면 자동으로 아래 경로에 yml파일이 만들어 진다. .github/workflows/main.yml name: Code deploy on: workflo..

반응형